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

請問有關CopyRect 與 ScanLine 的問題

尚未結案
cowbjt
一般會員


發表:11
回覆:30
積分:8
註冊:2004-07-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-30 16:09:54 IP:140.124.xxx.xxx 未訂閱
首先,我有二個image 的物件 image2 是從image1 CopyRect 過來的
 
TRect sor, des;
...
Image2->Canvas->CopyRect(des,Image1->Picture->Bitmap->Canvas,sor);    
然後,我要對iamge2 做處理,如:現在我要把iamge2 全部填成黑的
 
for(int y=0; yPicture->Bitmap->Height; y  )
    {
        ptr=(Byte*)Image2->Picture->Bitmap->ScanLine[y];
        for(int x=0;xPicture->Bitmap->Width;x  )
        {
           ptr[x*3]=0;
           ptr[x*3 1]=0;
           ptr[x*3 2]=0;
        }
    }
但是結果變成這樣 就是右邊會有一塊沒有處理到 但若程式碼如果改成這樣
 
for(int y=0; yPicture->Bitmap->Height; y  )
{
    ptr=(Byte*)Image2->Picture->Bitmap->ScanLine[y];        for(int x=0;xPicture->Bitmap->Width;x  )
    {
       Image2->Picture->Bitmap->Canvas->Pixels[x][y] =0;
    }    }
其中只是將ptr 的部份改成Pixels[x][y] 方式處理 但就正常了,因為之前用ptr 處理image1都很正常 而在處理有CopyRect 的image2 才發生這樣情形 真是不知道怎麼一回事??
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-30 22:38:13 IP:221.169.xxx.xxx 未訂閱
查一下Image2->Picture->Bitmap->PixelFormat的值是多少 或者把他改成 pf24bit 看看
cowbjt
一般會員


發表:11
回覆:30
積分:8
註冊:2004-07-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-31 15:32:19 IP:140.124.xxx.xxx 未訂閱
果然是這個問題 請問他的PixelFormat 是什麼意思阿?? 如果沒設又為什麼會這樣呢?
miloshop
一般會員


發表:8
回覆:22
積分:6
註冊:2004-10-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-31 18:51:10 IP:219.70.xxx.xxx 未訂閱
PixelFormat是指圖形為幾bit的資料若pf24bit則為r,g,b各用8bit去存圖型的色彩8*3正好為24bit,若沒有設在存取32bit時則會出錯,謝謝上面的大大,剛好最近也遇到了類似問題!一直沒想到是這個問題
cowbjt
一般會員


發表:11
回覆:30
積分:8
註冊:2004-07-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-03 15:33:55 IP:140.124.xxx.xxx 未訂閱
原來是這樣,謝謝大家 再請問一下,bcb 裡的image 能自已判定格式嗎 如果我們不知道一張圖片的格式 要自已讀header 判斷嗎?? 謝謝
miloshop
一般會員


發表:8
回覆:22
積分:6
註冊:2004-10-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-03 20:11:44 IP:219.70.xxx.xxx 未訂閱
如果是新設的一個圖檔的話,最好是設定一下會比較好 不然會跟我之前遇到的原因一樣 一直無法指派圖形上去 如果是用IMAGE讀檔,或是TGraphics::TBitmap,表頭應該不需要到我們去處理吧 除非你開BITMAP的方法是用以前最原始的讀檔方式 我學長就有留下這樣的CODE
CoffeeX
中階會員


發表:18
回覆:121
積分:72
註冊:2005-02-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-19 20:07:30 IP:140.125.xxx.xxx 未訂閱
引言: 如果是新設的一個圖檔的話,最好是設定一下會比較好 不然會跟我之前遇到的原因一樣 一直無法指派圖形上去 如果是用IMAGE讀檔,或是TGraphics::TBitmap,表頭應該不需要到我們去處理吧 除非你開BITMAP的方法是用以前最原始的讀檔方式 我學長就有留下這樣的CODE
方便和你請教最原始的方式嗎 我對這方面很感興趣thx^^
------
=.=???
系統時間:2024-05-17 11:34:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!