在GDI +中绘制带孔的透明平面

时间:2009-09-14 05:26:23

标签: c# vb.net gdi+

我需要在我的DotNET 2.0应用程序中的用户控件上绘制透明平面。这至少很容易。困难的是我需要在这个平面上有一些(可能重叠的)洞。在编译时不知道孔的形状和大小。

我尝试用Region进行处理,并从中排除一堆GraphicPaths。这很有效,除了孔的边缘没有消除锯齿。

还有其他解决方案吗?

请记住,用户控件是窗口的主要部分,可以最大化。因此,它具有可能非常大的表面积。该解决方案必须足够快,以便在全屏情况下至少 10 fps。

修改:添加了我想要实现的图像: Image of what I'm talking about. http://en.wiki.mcneel.com/content/upload/images/HolesInTPlane.png

1 个答案:

答案 0 :(得分:2)

这是一种方法:(虽然它听起来不快,它使用纯粹的blitfunctions所以它可能足够快)

  1. 创建一个与窗口大小相同的屏幕外位图。 (你只需要这样做一次,你可以保留它用于后续的油漆)
  2. 用纯色填充。
  3. 在屏幕外位图中使用鲜明颜色(例如紫色)的Cookie切割孔
  4. 将整个位图咬合到窗口上,半透明,紫色作为颜色键。 (所以不会复制紫色。)