.NET中非矩形形式的平滑边缘

时间:2011-01-18 18:38:55

标签: .net winforms forms drawing smoothing

我使用Form.Region创建了一个带圆角的表单。它很有效,但遗憾的是圆角看起来很粗糙。是否有任何技巧可以平滑这种形状的角落?我知道许多应用程序支持这一点,只是不确定如何在.NET中实现它。

谢谢你们。

2 个答案:

答案 0 :(得分:8)

没有很好的解决方法,区域不能消除锯齿。这是不可避免的,只有当您知道背景颜色以便正确混合时,抗锯齿才有效。这不是Windows的选择,背景是设计不可预测的。如果这是一个闪屏,那么您可以通过拍摄背景屏幕并在其上绘制假窗口来伪造它。不会工作超过几秒钟。

最好的办法是保持角半径小,这样就不那么明显了。还可以使用SysInternals的ZoomIt等工具,仔细查看Windows Media Player等程序的圆角。请注意它用于绘制边框的灰色色调。

答案 1 :(得分:5)

从我在网上看到的内容,大多数人最终会覆盖表单上的onpaint事件并在那里绘制区域。这允许他们使用GDI +进行抗锯齿处理,使其看起来更干净。

我找到的例子:

http://netcode.ru/dotnet/?lang=&katID=30&skatID=283&artID=7833 http://www.xtremevbtalk.com/showthread.php?t=288178