【问题标题】:WinForms (.NET) Button Anchoring when Maximized最大化时的 WinForms (.NET) 按钮锚定
【发布时间】:2009-04-10 18:50:53
【问题描述】:

好的,我已经用谷歌搜索了,但也许我把我的搜索放在了奇怪的地方。 :/

我有一个 VB.NET WinForms 应用程序。我为所有控件设置了锚属性,以便在窗体最大化时调整所有控件的大小以使其看起来体面。 (但尚未开始手动调整大小)。

无论如何,问题:

我会在主 GUI 表单/图片上为按钮设置相同的属性(目前使用单个按钮进行测试)。当我通过 F5 运行程序时,它看起来不错。但是当我最大化表单时,整个按钮的覆盖范围超出了应有的范围。

我已经截取了表单的屏幕截图,因此您可以直观地看到我在说什么。 :/

之前:http://zack.scudstorm.com/before.png
之后:http://zack.scudstorm.com/after.png

我还需要设置哪些其他属性(y|ies)才能使按钮正确显示? :/ (按钮越过显示“1-1”、“2-3”等的框。

谢谢,
-扎克

【问题讨论】:

  • 你是如何创建 1-1、2-3 的?图片?标签?

标签: c# winforms anchor button


【解决方案1】:

当你想要的只是左上角时,似乎你已经锚定了左上角和右下角。

编辑:如果只是在winform更改时不会更改的图像,则根本不要锚定按钮。把它们放在他们去的地方。如果您正在缩放图像,那么我要么检测图像上的点击并进行缩放数学运算,要么进行缩放数学运算并在 Form.OnResize 事件的代码中设置我的按钮。

【讨论】:

  • 有点工作。它现在不会调整按钮的大小以覆盖表单。现在,它只是将它从应该覆盖的盒子上移开。
  • 哦,我明白了,您希望按钮覆盖框。盒子是什么?图片?
  • 这些方框排列在代表计算机实验室中计算机的图像上。整个图像是这个(zack.scudstorm.com/Workstations_828x633.png)。
  • 当然,没问题...很高兴为您提供帮助。
【解决方案2】:

看来您的目标只是能够处理“计算机”上的点击...

对此类任务有用的一个选项是创建一个“叠加”位图(不显示,但与源位图的大小完全相同),它使用不同的颜色来表示所有可点击区域。 (例如,(R=0,G=0,B=0) 用于计算机 0,(0,0,1) 用于计算机 1 等)

您甚至可以自动生成此位图而无需太多麻烦(如果您有一种模式,您可以单击图像的左上角然后右下角来定义新区域)

当鼠标被点击时,你可以检查叠加层中鼠标位置的缩放坐标处的像素,并确定它们的点击对应的是什么。这比创建大量控件要容易得多,并且可以更轻松地创建非矩形的可点击区域。

【讨论】:

  • 投票赞成,因为你很有帮助!尽管工作量很大。 :( 感谢您的帮助。
  • @Zack:老实说,如果你使用覆盖方法,它应该不会那么糟糕......就像放置所有按钮一样麻烦!
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2014-11-25
  • 2010-12-24
  • 2023-04-04
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多