如何在WPF中调整画布大小?

voi*_*ter 4 .net c# wpf resize canvas

我正在编写一个包含其中的WPF应用程序Canvas.此画布将在运行时自定义呈现.它有点像游戏,因为它需要以像素为单位进行测量.我需要能够设置Canvas为478x478像素(客户端矩形大小).我不希望任何缩放或其他与分辨率无关的步骤发生在我的身上Canvas.

我不确定WPF中是否可行,因为它的性质是独立于分辨率.我的问题:

  1. 如何Canvas在运行时调整我的大小(要调用的函数?)
  2. 当我调整大小时Canvas,可渲染区域(客户端矩形)是那么大吗?如果没有,我该如何调整它以确保客户端矩形是特定的宽度/高度?
  3. 是否可以设置Canvas像素的宽度/高度?WPF的与分辨率无关的方面如何干扰我正在尝试做的事情?
  4. 当我调整大小时Canvas,其他控件是否会按照WPF设计器中的设计进行适当调整?

提前致谢.

Mua*_*Dib 5

调整大小是蛋糕:

MyCanvas.Width = 350;
MyCanvas.Height  = 450;
Run Code Online (Sandbox Code Playgroud)

这设置了大小,你可以渲染到此外的坐标,但它会被剪裁.您可以将画布包装在滚动条内,以允许用户查看画布高度/宽度之外的内容.

至于你的其他问题,我想你可以看到这个问题的答案


Jos*_*osh 5

位于画布中的任何元素都不会根据画布的大小调整大小或重新定位.所以我认为设置画布的大小没有任何好处.也许你应该只设置一个固定大小的窗口.

否则,只需设置Canvas.Width,Height和ClipToBounds = True,您就拥有一个固定大小的画布,可以使用X/Y坐标定位其子元素.

此外,您应确保在画布上设置SnapsToDevicePixels = True,以便子元素具有清晰的像素对齐边界.