我一直在使用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 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()
会覆盖每个像素.
关于c++ - 清除图形的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234515/