Как связать размер изображения и холст в Wpf - PullRequest
0 голосов
/ 20 декабря 2018

Мне трудно решить эту проблему.

Я создаю программу, которая рисует прямоугольник на холсте, а фон - это элемент управления изображением с панорамированием и масштабированием с помощью этого кода Pan & Zoom Image .Затем я добавил свойство зависимости, которое возвращает базу Rect из позиции мыши. Но когда размер окна изменяется, нарисованный прямоугольник не корректируется.но изображение корректируется

Вот код Xaml

  <dpzrm:ZoomBorder IsDrawing="True" Rect="{Binding Rect}">
        <Grid>
            <Image   Source="img_05_l.jpg" x:Name="img"/>

            <ItemsControl ItemsSource="{Binding RectItems}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemContainerStyle>
                    <Style TargetType="ContentPresenter">
                        <Setter Property="Canvas.Left" Value="{Binding X}"/>
                        <Setter Property="Canvas.Top" Value="{Binding Y}"/>
                    </Style>
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Rectangle Width="{Binding Width}" Height="{Binding Height}" Fill="Black"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Grid>
    </dpzrm:ZoomBorder>

Ниже приведен пример скриншота

enter image description here

Вот как это выглядит, когда я изменяю размер окна

enter image description here

С кодами выше позиция рисования правильная (при рисовании с помощью мыши она падает вправильные координаты с помощью мыши), но когда я изменяю размер окна.нарисованный прямоугольник не следует.

<Canvas Height="{Binding ActualHeight, ElementName=img}" Width="{Binding ActualWidth, ElementName=img}"/>

Но когда я добавлю этот код в привязку.Рисунок с помощью мыши не попадает в правильные координаты.И когда я изменяю размер окна.Нарисованный прямоугольник не корректируется

Нарисованный прямоугольник неправильный.Правильно ли я привязываю изображение?

1 Ответ

0 голосов
/ 20 декабря 2018

Я не знаю, решит ли это вашу проблему, потому что мне нужно было бы найти код, который вы использовали, реализовать его самостоятельно и посмотреть, что произойдет.

Одна вещь, которую я так или иначе сделал бы, это сделать фониз холста в пунктах управления картиной.

Удалите отдельное изображение, которое у вас есть в данный момент, и используйте вместо него кисть для изображения:

 <ItemsPanelTemplate>
    <Canvas>
        <Canvas.Background>
             <ImageBrush ImageSource="img_05_l.jpg"/>
        </Canvas.Background>
...