イメージがロードされたInkCanvasを実装しようとしています。その画像の周りをズームしたりスクロールしたり、画像にマーキングを付けることができる必要があります。イメージマークアップのためのWPFアプリケーションデザインズーム中に相対的なままになる
画像のScaleTransformをスライダにバインドしようとすると、画像は拡大されますが、インクは拡大されません。
<Image Name="ImageWork" HorizontalAlignment="Center">
<Image.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=ZoomSlider,Path=Value}" ScaleY="{Binding ElementName=ZoomSlider,Path=Value}" />
</Image.LayoutTransform>
</Image>
</InkCanvas>
</ScrollViewer>
<Slider DockPanel.Dock="Top" Name="ZoomSlider" Value="1" Minimum="0.3" Maximum="3" Height="20" ValueChanged="ZoomSlider_ValueChanged"/>
私は、インク自体の規模を変更しようとしましたが、比較的同じ場所に滞在し、または同じアンカーポイント間でのズーミングないです:
private void ZoomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (e.OldValue > 0d)
{
double factor = e.NewValue/e.OldValue;
Matrix scaleMat = new Matrix();
scaleMat.ScaleAt(factor, factor, InkCanvasOnImage.ActualWidth/2, InkCanvasOnImage.ActualHeight/2);
InkCanvasOnImage.Strokes.Transform(scaleMat, false);
}
}
行う方法私は自分のイメージとインクストロークを一緒にうまく合わせるようにしますか?
開いているウィンドウの範囲外のコントロールをScrollViewerの外に移動することなくこれを行うことはできますか? –
詳細を教えてください。 – tabby
https://vid.me/GeyKb私が苦労しているのは、画像のサイズではなく、画像の範囲を変更したいという事実です。グリッドのサイズを変更すると、他のすべてのものが押し出されて、スライダをウィンドウの下部に残しておきたいと思うようです。 –