我一直在使用 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
所以我想知道一种替代方法(一种只清除线而不是背景的方法)(如果它存在)
答案 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()
可以放置图像。