線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2035
推到 Plurk!
推到 Facebook!

請問TImage用draw畫上去後怎麼復原

尚未結案
huangjulie
一般會員


發表:5
回覆:12
積分:3
註冊:2005-02-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-26 12:02:01 IP:61.218.xxx.xxx 未訂閱
各位大大好,我正在用bcb寫圍棋網路對下的程式 先設一個image1,畫出棋盤 image2為黑棋,image3為白棋, 下棋為Image1->Canvas->Draw(x,y,Image2->Picture->Graphic); 請問如果我要退回時,要怎麼做呢? (我有用list記錄每步棋的x,y,color)
yyu10
中階會員


發表:9
回覆:99
積分:96
註冊:2005-02-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-26 18:55:45 IP:220.244.xxx.xxx 未訂閱
达到你想要的效果, 需要用特制的image2和image3.    假设image1中, 棋盘颜色为clYellow, 格线颜色为clRed.    1, 制作黑棋Bitmap(bitmap2)    底色: clBlack 棋子和棋盘重合的部分: clBlack XOR clYellow (棋盘颜色) 棋子和格线重合的部分: clBlack XOR clRed (格线颜色)    2, 制作白棋Bitmap(bitmap3)    底色: clBlack 棋子和棋盘重合的部分: clWhite XOR clYellow (棋盘颜色) 棋子和格线重合的部分: clWhite XOR clRed (格线颜色)    3. 画棋子    下棋:
  TBitMap bitmap2, bitmap3;      Image1->Canvas->CopyMode = cmSrcInvert;
  Image1->Canvas->CopyRect(
    Rect(X, Y, X   bitmap2.Width, Y   bitmap2.Height),
    bitmap2.Canvas,
    Rect(0, 0, bitmap2.Width, bitmap3.Height));
退回: 代码同上, 既将棋子在原处重画一遍. _________________________ Programming is a passion
huangjulie
一般會員


發表:5
回覆:12
積分:3
註冊:2005-02-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-28 11:01:35 IP:61.218.xxx.xxx 未訂閱
不好意思 退回的部份我不懂你的意思 可以麻煩你解釋清楚一點嗎
liangnet
中階會員


發表:19
回覆:148
積分:83
註冊:2004-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-28 13:20:07 IP:211.20.xxx.xxx 未訂閱
你是否有配置一個陣列來記錄你的棋盤目前哪個位置有下棋子??
例如:
//配置一個陣列來記錄每個棋盤的位置
//棋盤大小  10 x 10
char map[10][10];    //當(1,1) 這個位置資料為0時,表示未下子
map[1][1] = 0; //表示未下子    //當(5,8)這個位置資料為1時,表示下白子
map[5][8] = 1;//表示這個位置有下白子    //當(2,3)這個位置資料為-1時,表示下黑子
map[2][3] = -1;//表示這個位置有下黑子    你要還原時!
1.將map資料還原,你有用list記錄X Y Color,
就將map[x][y] = Color.....    2.將依map的內容重繪棋盤    棋盤重繪的函式大概可以這樣寫…
void __fastcall DrawBoard()
{
    //清除畫面
    ....        //畫格子
    .....        for (int y = 0; y < 10; y  )
    {
         for (int x = 0; x < 10; x  )
         {
               if (map[x][y] == 1)
                          //畫白子
               else if (map[x][y] == -1)
                          //畫黑子
         }
    }
}
系統時間:2017-10-23 8:59:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!