我正在编写一个包含Canvas
的WPF应用。此画布将在运行时自定义呈现。它有点像游戏,因为它需要以像素为单位进行测量。我需要能够将Canvas
设置为478x478像素(客户端矩形大小)。我不希望在我的Canvas
上进行任何扩展或其他与解决方案无关的步骤。
我不确定这在WPF中是否可行,因为它的本质是独立于分辨率。我的问题:
Canvas
(调用函数?)Canvas
的大小时,可渲染区域(客户端矩形)的大小是多少?如果没有,我如何调整它以确保客户端矩形是特定的宽度/高度?Canvas
的宽度/高度? WPF的与分辨率无关的方面如何干扰我正在尝试做的事情?Canvas
的大小时,其他控件是否会因为WPF设计器中的设计而适当调整大小?提前致谢。
答案 0 :(得分:5)
MyCanvas.Width = 350;
MyCanvas.Height = 450;
这设置了大小,你可以渲染到此外的坐标,但它会被剪裁。您可以将画布包裹在滚动条内,以允许用户查看画布高度/宽度之外的内容。
关于你的其他问题,我认为你可以看到this SO question的答案
答案 1 :(得分:5)
位于画布中的任何元素都不会根据画布的大小调整大小或重新定位。所以我认为设置画布的大小没有任何好处。也许你应该只设置一个固定大小的窗口。
否则,只需设置Canvas.Width,Height和ClipToBounds = True,你就有了一个固定大小的画布,可以用X / Y坐标定位它的子元素。
此外,您应确保在画布上设置SnapsToDevicePixels = True,以便子元素具有清晰的像素对齐边界。
答案 2 :(得分:0)
2020年更新:在WPF .NET上内核:如果Canvas
是Viewbox
的子代,则内容将自动缩放为Viewbox
的高度和宽度。
<Viewbox Stretch="Fill"
Width="50"
Height="50">
<Canvas>
<Path.... />
</Canvas>
</Viewbox>