2012-09-02 52 views
0

我一直在使用cleardevice()清除圖形...但它產生幾個問題替代的方法來清除圖形

用於例如..我創建一個背景,但我要明確一些特定元素,那麼我不得不使用另一個用戶定義的函數拉布(它繪製的背景,並同時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

你使用了什麼圖形庫?如果你直接繪製背景,爲什麼還需要'cleardevice()'?在整個屏幕上畫背景是否符合清晰條件?如果要清除特定區域,您應該查看裁剪。 –

+0

我想我需要使情況明確 –

+0

我不知道正確的圖書館....但我使用turboC++ ..(我知道它的過時)..但我的學校使用如此)..最可能winbgim –

回答

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()覆蓋每個像素ayway。

+0

好.. thnx很多! –

0

您可以先取圖像通過getimage() 畫線之前,把該圖像就行了,只要你想隱藏你的形象 這不會改變你的背景和不輕彈它。 putimage()可以放置圖像。