清除图形的替代方法

时间:2012-09-02 08:37:12

标签: c++ graphics

我一直在使用 cleardevice()来清除图形......但它会产生一些问题

例如...我创建了一个背景,但我必须清除一些特定的元素,然后我必须使用另一个用户定义的函数 drawb( )< / em>绘制背景并同时 cleardevice(); 造成很多问题

line(x,y,x1,y1);   //suppose this line is to be erased 
                   //but using cleardevice even clears the background   
cleardevice();
drawb();  //to draw board or background

所以我想知道一种替代方法(一种只清除线而不是背景的方法)(如果它存在)

2 个答案:

答案 0 :(得分:1)

绘制一条线后,没有真正的方法可以将其删除(除非您使用XOR mode绘图!)。但是,你可以做一些事情。您可以渲染除页面中的所有内容之外的所有内容并将其存储在那里。然后,在另一个页面中,您渲染所有内容,包括行。因此,如果要撤消该行,只需将页面切换回来。

一个例子:

setactivepage(0);
// draw stuff, including background
setactivepage(1);
// draw stuff, including background and line
setvisualpage(0); // no line visible
setvisualpage(1); // line visible

此外,如果您想要使用背景重置屏幕,则无需执行cleardevice(),因为drawb()会覆盖每个像素。

答案 1 :(得分:0)

您可以先通过getimage()绘制线条之前拍摄图像 并且只要您想要隐藏图像,就将该图像放在线上  这不会改变你的背景而不是轻弹它。 putimage()可以放置图像。