gpt4 book ai didi

c# - 仅在 Windows 应用商店应用程序中保存 Canvas 的裁剪区域

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:47 25 4
gpt4 key购买 nike

我正在尝试将 Canvas 保存为图像 this代码

我的Canvas高宽是500,500,裁剪坐标也是500,500

 <Canvas x:Name="DrawCanvas"  Width="500" Grid.ColumnSpan="2" Grid.Row="1" Height="500" Background="White" HorizontalAlignment="Center" VerticalAlignment="Center" Tapped="DrawCanvas_Tapped">
<Canvas.Clip>
<RectangleGeometry Rect="0,0,500,500"></RectangleGeometry>
</Canvas.Clip>
</Canvas>

但是当我添加高度和宽度为 600,600 的子图像然后保存它时,Canvas 也通过用黑色覆盖额外的空间来保存该部分,然后保存它。如何解决这个问题,我希望只保存用户可见的那部分。谢谢。

最佳答案

默认 Canvas 不剪裁它的 child ,所以你可能需要启用相同的

所以在 Canvas 中设置ClipToBounds="True"

例如。

    <Canvas ClipToBounds="True" x:Name="DrawCanvas" Width="500" Grid.ColumnSpan="2" Grid.Row="1" Height="500" Background="White" HorizontalAlignment="Center" VerticalAlignment="Center" Tapped="DrawCanvas_Tapped">
<Canvas.Clip>
<RectangleGeometry Rect="0,0,500,500"></RectangleGeometry>
</Canvas.Clip>
</Canvas>

如果上述方法不足以满足您的情况,那么您可能需要在渲染到图像之前对 Canvas 进行布局

    c.Measure(new Size(500, 500));
c.Arrange(new Rect(0, 0, 500, 500));

仅当您仅在代码中创建 Canvas 而不是将其作为窗口或其他容器的可视化树中的元素时,才可能需要上述内容。

关于c# - 仅在 Windows 应用商店应用程序中保存 Canvas 的裁剪区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com