1

我一直在使用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

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

4

2 回答 2

2

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

一个例子:

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

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

于 2012-09-02T10:31:09.243 回答
1

您可以在画线之前先拍摄图像,getimage() 并在您想隐藏图像时将该图像放在线上。这不会改变您的背景,也不会轻弹它。putimage()可以放图。

于 2017-10-15T11:20:10.390 回答