image zoom in out

현재 이러한 코드로 image를 zoom control하고 있습니다.

if (e.delta > 0)
{
    zoomFactor *= 1.1;
}
else
{
    zoomFactor *= 0.9;
}

Image.RenderTransform = new ScaleTransform(zoomFactor, zoomFactor);

제가 원하는 동작은 예를 들어 width와 height이 300이라고 할 때 해당 값은 고정하고
내부 이미지만 zoom in out 되는 것입니다.

경험치가 견지인지라 어떤 속성을 건들여야 width, height을 고정하고 zoom in out 되는지를 모르겠습니다.

도와주시면 너무 감사할 것 같습니다. !

1개의 좋아요

무서울 정도로 질문을 하기만 하면 해결되네요,
이틀을 못했는데 5분만에 해결했습니다.

Grid로 감싸고 Viewport 자체의 크기를 바꾸니까 되는 것 같네요

Viewbox.LayoutTransform = new ScaleTransform(Viewbox.LayoutTransform.Value.M11 * 0.9, Viewbox.LayoutTransform.Value.M22 * 0.9);
3개의 좋아요

감싸는 Grid에 ClipToBounds 속성 값을 True로 주면 아마 원하는 결과이지 않을까 합니다.

| ClipToBounds = “False”
image

| ClipToBounds = “True”
image

        <Grid
            Width="200"
            Height="200"
            Background="Red"
            ClipToBounds="True">
            <Image Source="https://www.hdec.kr/FileContents/EditorImg/20211227/%EA%B0%95%EC%9B%90%20%EC%A0%95%EC%84%A0%20%EB%A7%8C%ED%95%AD%EC%9E%AC_770.jpg">
                <Image.RenderTransform>
                    <ScaleTransform ScaleX="2" ScaleY="2" />
                </Image.RenderTransform>
            </Image>
        </Grid>
1개의 좋아요

감사합니다 ㅎㅎ 디모이님 덕분에 해결하고 Pan 구현하고있습니당

1개의 좋아요