如何使用GDI实现图层?

时间:2009-12-12 14:15:11

标签: visual-c++ gdi

我想像photoshop一样实现橡胶功能,但我希望橡胶只是擦除背景上绘制的形状而不修改背景。现在背景是一个图像,所以我不能使用单一颜色的画笔。

2 个答案:

答案 0 :(得分:1)

您需要将图像的每一层存储在自己的缓冲区中,然后将它们组合起来输出它。因此背景将在一个Image对象中,而形状将在另一个Image对象中。当您获得WM_Paint消息时,您必须将两个图像合并为一个并输出(或者您必须将图像预先组合在内存中的第三个Image对象中)。

答案 1 :(得分:0)

如果你只想绘制简单的线条/形状,如橡皮筋盒,那么老式的方法就是使用独家或绘画。这会“反转”绘制的颜色,因此第二次绘制相同的形状会将其删除并返回原始图像。

现在计算机功能强大得多,所以我们倾向于(如Dave Markle所说)将两个单独的图像组合到屏幕上(您只需将正在编辑的实际图像存储在屏幕外的位图中)。这允许您使用任何颜色/透明度绘制叠加层,这样您可以使它看起来更好。