清除图形的替代方法



我一直在使用cleardevice()来清除图形。。。但是它造成了的几个问题

例如。。我创建了一个背景,但我必须清除一些特定的元素,然后我必须使用另一个用户定义的函数drawb(),它绘制背景,同时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

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

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

一个例子:

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()会覆盖所有像素。

您可以在getimage()绘制线条之前先拍摄图像只要你想隐藏你的图像,就把这个图像放在线上这不会改变你的背景,也不会轻弹它。putimage()可以放置图像。

相关内容

最新更新