我一直在使用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()
可以放置图像。