Я создал подкласс элемента управления изображением (для отображения изображений с их истинным размером в пикселях, независимо от настройки разрешения в метаданных), и я хочу реализовать прокрутку и масштабирование с помощью ScaleTransform (внутри LayoutTransform). Это отлично работает на 100%, но при масштабировании размер прокрутки остается равным размеру изображения 100%.
Мой XAML:
<ScrollViewer Name="imgScrollViewer" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<PL:DpiAgnosticImage x:Name="Ctrl_ImgMain" Stretch="None" HorizontalAlignment="Left" MouseWheel="Ctrl_ImgMain_MouseWheel" VerticalAlignment="Top" >
<Image.LayoutTransform>
<ScaleTransform ScaleX="{Binding ZoomLevel}" ScaleY="{Binding ZoomLevel}">
</ScaleTransform>
</Image.LayoutTransform>
</PL:DpiAgnosticImage>
</ScrollViewer>
С# для моего класса DpiAgnosticImage:
class DpiAgnosticImage : Image
{
protected override Size MeasureOverride(Size constraint)
{
var bitmapImage = Source as BitmapImage;
var desiredSize = bitmapImage == null
? base.MeasureOverride(constraint)
: new Size(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
return desiredSize;
}
protected override Size ArrangeOverride(Size finalSize)
{
return new Size(Math.Round(DesiredSize.Width), Math.Round(DesiredSize.Height));
}
}
Я искал вокруг, но самое близкое, что я нашел для этой проблемы, предполагает использование LayoutTransform, которым я уже являюсь. Я подозреваю, что мне нужно что-то реализовать, чтобы изменить размер прокрутки при масштабировании изображения, но я изо всех сил пытаюсь выяснить, что требуется. Мы ценим любые предложения.