我第一次用C#开发Windows表单应用程序。我正在使用Visual Studio 2012。
我的表格大小= 1096x508。我还将最小尺寸和最大尺寸属性设置为1096x508。
这是我的应用的截图
但是当我在另一台计算机上执行此应用程序时,结果如下:
如您所见,红线(在应用程序底部)看不见。因为应用程序的高度在我的电脑上是508像素(如预期的那样),但在其他电脑上是416像素。正因为如此,红线停留在Form之外。所以我们看不到它。
很快,我的Form的大小为1096x508px,但在另一台计算机上只有823x416px。你能告诉我为什么会有区别吗?我该如何解决这个问题?这些屏幕之间存在分辨率差异。
答案 0 :(得分:4)
应用程序在这些计算机上的行为可能是由Windows操作系统的不同dpi(每英寸点数)设置引起的。为了检查,请比较Windows显示设置中的实际值(100%,125%,...)。 如果您希望程序独立于dpi设置,您可以尝试使用不同的面板(控件容器)。您的状态栏可以固定,而游戏区域是一个停靠面板(填充剩余空间)。 一般而言,保持独立于实际dpi,是一个难题。大多数情况下,您可以使用自动调整控件,但如果两个标签重叠,则可能会用完空间。
答案 1 :(得分:1)
正如您已经发现的那样,主要问题是具有不同DPI设置的计算机将导致控件缩放。
汉斯的建议in his linked answer是你需要重新设计你的表单,这样当它重新调整大小时,它会相应地处理它们。
通常处理此方法的主要方法是设置控件的Anchor
property或Dock
property。默认情况下,控件将锚定到其父容器的左上角。当它被告知要缩放时,它向下和向右缩小。通过将锚点更改为仅底部,它将使您的底部控制向上移动,而不是从父级边界向下移动。