如何在 Viewbox 中使用 inktoolbar 中的标尺显示 InkCanvas
How to display InkCanvas in Viewbox with ruler in inktoolbar
当 InkCanvas
是 Viewbox
的子项时,墨迹工具栏中的标尺 (InkPresenterRuler
) 无法正确显示。
有人知道如何解决吗?
您能否详细说明标尺为何无法为您正确显示(也许提供屏幕截图和 XAML 片段)?我对您的场景进行了快速演示,标尺为我正确显示(一切都按预期放大了 200%)。
<Grid Background="Black">
<Viewbox Width="600" Height="600">
<Grid Width="300" Height="300" Background="White">
<InkCanvas x:Name="inkCanvas"/>
<InkToolbar TargetInkCanvas="{x:Bind inkCanvas}" VerticalAlignment="Top"/>
</Grid>
</Viewbox>
</Grid>
经过数小时的尝试和错误,这就是我所拥有的,但是我无法在对角线方向上显示标尺。
private void ResizeInkRuler() {
var viewBoxWidth = ImageViewBox.ActualWidth;
var viewBoxHeight = ImageViewBox.ActualHeight;
var widthIsGreater = viewBoxWidth.CompareTo(viewBoxHeight) > 0;
var scaleFactor = widthIsGreater ? InkImage.ActualWidth / viewBoxWidth : InkImage.ActualHeight / viewBoxHeight;
var length = widthIsGreater ? viewBoxWidth : viewBoxHeight;
ruler.Transform = Matrix3x2.CreateScale((float) scaleFactor);
ruler.Length = length;
}
当 InkCanvas
是 Viewbox
的子项时,墨迹工具栏中的标尺 (InkPresenterRuler
) 无法正确显示。
有人知道如何解决吗?
您能否详细说明标尺为何无法为您正确显示(也许提供屏幕截图和 XAML 片段)?我对您的场景进行了快速演示,标尺为我正确显示(一切都按预期放大了 200%)。
<Grid Background="Black">
<Viewbox Width="600" Height="600">
<Grid Width="300" Height="300" Background="White">
<InkCanvas x:Name="inkCanvas"/>
<InkToolbar TargetInkCanvas="{x:Bind inkCanvas}" VerticalAlignment="Top"/>
</Grid>
</Viewbox>
</Grid>
经过数小时的尝试和错误,这就是我所拥有的,但是我无法在对角线方向上显示标尺。
private void ResizeInkRuler() {
var viewBoxWidth = ImageViewBox.ActualWidth;
var viewBoxHeight = ImageViewBox.ActualHeight;
var widthIsGreater = viewBoxWidth.CompareTo(viewBoxHeight) > 0;
var scaleFactor = widthIsGreater ? InkImage.ActualWidth / viewBoxWidth : InkImage.ActualHeight / viewBoxHeight;
var length = widthIsGreater ? viewBoxWidth : viewBoxHeight;
ruler.Transform = Matrix3x2.CreateScale((float) scaleFactor);
ruler.Length = length;
}