影像回復 重做問題 |
尚未結案
|
阿倫
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-15 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
dear 阿倫:
提供一個作法給你參考看看~~回覆(Undo)的部份,替每一個影像建立一塊記憶體,再每次進行處理之前把影像複製一份進去。當使用者做Undo時,就把記憶體中的影像複製回來即可。因為你是用MDI的方式,所以每個影像都要準備自己的Undo區塊,不能共用。
重做(Redo)的話,我想到兩種作法。一是類似Undo的作法;二是把上一個執行的指令記下來,當使用者執行Redo時,執行該指令。不過第二種作法的困難在於如何執行記下來的指令。我的作法可能會利用TList與TAction來搭配,或是用函數指標的方式也可以。
另外,如果要作多次Undo與Redo功能(類似Word那樣),或許考慮用堆疊的方式管理Undo/Redo的記憶體吧~
|
阿倫
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-15 發送簡訊給我 |
|
阿倫
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-15 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
|
阿倫
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-15 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
dear 阿倫: 由於VCL類別物件只能用 new 來產生,所以會比較麻煩一點。
// 產生動態二維TBitmap陣列 // 宣告一個三重指標,指向包含8個二重指標的記憶體 Graphics::TBitmap ***pBMP = new Graphics::TBitmap **[8]; for(int i = 0; i < 8; i ) { // 對每一個二重指標,指向包含16個指標的記憶體 pBMP[i] = new Graphics::TBitmap *[16]; // 讓每個指標指向新產生TBitmap物件 for(int j = 0; j < 16; j ) // pBMP[i][j] 是一個指向TBitmap的指標 pBMP[i][j] = new Graphics::TBitmap(); }這樣就會產生 8*16 的TBitmap物件陣列,透過指標pBMP[i][j]來操作。 |
阿倫
一般會員 發表:2 回覆:5 積分:1 註冊:2004-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |