【问题标题】:Contols intersect on windows form控件在 Windows 窗体上相交
【发布时间】:2016-04-25 14:24:15
【问题描述】:

我有两个位于 Windows 窗体上的控件。问题是这两个控件具有特定的形式并且它们相交。

当我将第一个控件放在第二个控件之前时,它看起来像这样:

当我更改订单时,它看起来像这样:

我怎样才能正确解决这些问题?

【问题讨论】:

  • 您可以通过更改控件的区域来更改控件的形状,例如 RoundCornerControlTriangular PictureBox。如果你不需要改变控件的形状,只需要一个透明的渲染,你可以看看这个Transparent PictureBox and Transparent Label
  • @Reza Aghaei:谢谢!!! RoundCornerControl 成功了!你能把它写成答案(不仅仅是评论)吗?
  • 太棒了!不客气 :) 与其发布重复的答案,我认为最好为您认为有帮助并且喜欢它们的问题和答案投票 :)

标签: c# winforms


【解决方案1】:

WinForms 控件无法做到真正的透明。他们的透明度只是为了拿他们父母的BackColor。如果这些控件都是自定义绘制的(它们看起来好像是这样),如果可能,您应该在一个控件中绘制整个部分。

如果不是,请考虑在控件中渲染橙色背景,从而导致第二张图片中的黑角也是如此。所以实际上你会有两个不同的控件来渲染橙色区域的一部分,但看起来它只是一个。

如果您查看图像,其他控件必须渲染红线上方和左侧的部分。附加到这些侧面的控件必须绘制灰色区域,因此我假设您还必须采用非常复杂的绘制算法来绘制橙色区域。

【讨论】:

  • 很遗憾,我做不到,我无法合并它们。
  • 您的建议听起来并不有趣 :) 我想知道是否应该使用分层窗口或其他具有正确设置所有者属性和透明内部块的窗体。你怎么看?
  • 我不知道排列控件的复杂性,但是将内容渲染为图像并将其放入表单的背面呢?然后,您可以将自定义绘制的控件放置到该图像上。
  • 将浮动表单粘贴到父级似乎对我来说不是一个好主意。你必须处理很多事情,比如阻止 AltF4、保持移动的窗口同步、Alt-Tab 怎么样……
  • 是否将黑色按钮放在前面不能正确绘制?
猜你喜欢
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多