Я разделил элемент управления изображениями на подклассы (для отображения изображений с их истинным размером пикселя, независимо от настройки разрешения в метаданных), и я хочу реализовать прокрутку и масштабирование, используя 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>
C # для моего класса 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, которым я уже являюсь.Я подозреваю, что мне нужно реализовать что-то, чтобы изменить размер прокрутки при масштабировании изображения, но я изо всех сил пытаюсь выяснить, что требуется.Любые предложения будут оценены.