澄清:你想在桌面的面积,不只是你的窗口的范围内,是你的控制,让您应用逐像素过滤器下。如果是这样的话,我认为你需要的是使用XNA库的DirectDraw。 WPF可以让你得到你所需要的,但WinForms很可能不会。还有第三方工具。
如果希望只在您的应用程序窗口的界限这种能力,例如在绘图应用程序,它变得更容易。从Control继承的Windows.Forms名称空间中的每个类都暴露了一个CreateGraphics()方法。此方法返回一个表示覆盖控件屏幕区域的绘图表面的对象,并且是几乎任何您想在涉及自定义图形的窗口上执行的任何操作的基础(在内部,它用于首先绘制控件) 。
一旦你有图形对象,你可以在上面画图。绘制动画或游戏等自定义图形的常用方法是在Bitmap对象上进行实际绘制(从抽象图像派生),然后完成后在图形区域绘制位图。这样做是为了减少闪烁;如果图形区域在绘制时显示给用户,那么用户在“擦除”和重绘之前只能看到完整的图像一秒钟,并且半途画出的形状将在那里一会儿并且消失接下来等待被绘制。绘制到位图,然后在完成后在屏幕上显示位图,意味着用户一次可看到完整的图像。
您可以使用透明度功能扩展此功能以创建多层图像。为您希望操作的每个图层都有一个位图。分别对它们进行处理,然后按照它们从后到前的正确顺序将它们中的每一个绘制到主位图上,然后在屏幕上绘制该位图。这允许您使用PhotoShop类型的操作,其中一部分图像是一个图层,并且可以独立于其他图层进行操作。
对于每像素过滤,Bitmap对象公开了GetPixel()和SetPixel()方法,这些方法允许您获取单个像素的颜色,执行滤镜计算并重新绘制它。这个过程将完全不加速,因此受到CPU速度的限制,但可以非常精细地控制图像或重复执行任务,如过滤器。
看起来很像xor过滤器。 – 2010-09-17 17:16:49