請問大家如何將灰階值秀在richedit上 |
尚未結案
|
jim006
一般會員 發表:22 回覆:25 積分:9 註冊:2004-01-14 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
jim006 你好:
這可能是你要的~
void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *BMP = new Graphics::TBitmap(); // 開啟圖檔 if(OpenPictureDialog1->Execute()) BMP->LoadFromFile(OpenPictureDialog1->FileName); Byte *ptr; AnsiString str; for(int r = 0; r < BMP->Height; r ) { ptr = (Byte *)BMP->ScanLine[r]; str = ""; // 一定要「歸零」喔 for(int c = 0; c < BMP->Width; c ) str = AnsiString().sprintf("X ", ptr[c]); // 把一列的數值丟到 RichEdit 中 RichEdit1->Lines->Add(str); } delete BMP; }範例用了 Button1, RichEdit1, OpenPictureDialog1。如果你要將你的陣列顯示出來,請將迴圈中的 ptr[c] 改成 YourArray[r][c] 之類的就可以了。用 AnsiString().sprintf("X "... 的原因是這樣比較好對齊。還有,RichEdit的ScrollBar屬性要設為ssBoth,WordWarp屬性設為false,Font設為「細明體,9pt」,保證滿意~ 發表人 - |
jim006
一般會員 發表:22 回覆:25 積分:9 註冊:2004-01-14 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
jim006 你好:
1. 若是24bpp的圖或是3個陣列,那就看你要怎樣安排了。
Byte *ptr; AnsiString str; for(int b = 0; b < 3; b ){ //------------(1) for(int r = 0; r < BMP->Height; r ) { ptr = (Byte *)BMP->ScanLine[r]; str = ""; // 一定要「歸零」喔 for(int c = 0; c < BMP->Width; c ) for(int b = 0; b < 3; b ) //------------(2) str = AnsiString().sprintf("X ", ptr[c*3 b]); // 把一列的數值丟到 RichEdit 中 RichEdit1->Lines->Add(str); } } 第一種的結果: B B B B B ... B B B B B ... B B B B B ... G G G G G ... G G G G G ... G G G G G ... R R R R R ... R R R R R ... R R R R R ... 第二種的結果: B G R B G R B G R ... B G R B G R B G R ... B G R B G R B G R ...2. 顯示10進制的,修改如下,還是可以對齊 str = AnsiString().sprintf("%3d ", ptr[c]);就醬啦~ |
jim006
一般會員 發表:22 回覆:25 積分:9 註冊:2004-01-14 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
引言: ex 我現在有 甲班 乙班 丙班(各各獨立的矩陣) 的學生名單 ,我現在想做的 是將甲班乙班丙班 顯示在一張白紙上(richedit).....希望您能了解我的意 思......tks >>< face="Verdana, Arial, Helvetica"> 嗯~~我想這應該不難。可以將輸出RichEdit的部分寫成函式,然後將每一個陣列丟進去就好。比如顯示灰階值來說,void __fastcall ShowGrayBitmapOnRichEdit(Graphics::TBitmap *BMP) { Byte *ptr; AnsiString str; for(int r = 0; r < BMP->Height; r ) { ptr = (Byte *)BMP->ScanLine[r]; str = ""; for(int c = 0; c < BMP->Width; c ) str = AnsiString().sprintf("X ", ptr[c]); RichEdit1->Lines->Add(str); } RichEdit1->Lines->Add(""); // 空一列,以資區別 } 然後 ShowGrayBitmapOnRichEdit(BMP1); ShowGrayBitmapOnRichEdit(BMP2); ...應該沒錯吧~ 當然還有別的方法,你可以再想想看~ |
tzeyang
一般會員 發表:4 回覆:4 積分:1 註冊:2005-03-23 發送簡訊給我 |
arisaka_matsuri 你好:
是不是可以請你說明一下程式碼呢,我是新手剛接觸這個沒有很久的時間,不知道是不是可以說明一下
Byte *ptr;
AnsiString str;
for(int r = 0; r < BMP->Height; r )
{
ptr = (Byte *)BMP->ScanLine[r];
str = ""; // 一定要「歸零」喔
for(int c = 0; c < BMP->Width; c )
str = AnsiString().sprintf("X ", ptr[c]);
// 把一列的數值丟到 RichEdit 中
RichEdit1->Lines->Add(str);
} delete BMP;
主要是什麼意思
謝謝
|
tzeyang
一般會員 發表:4 回覆:4 積分:1 註冊:2005-03-23 發送簡訊給我 |
請問我該如何把灰階值以N個4*4的陣列的方式列出
我用迴圈可是出現一個我看不太懂的錯誤訊習 num[1] 01 02 03 40 85 60 04 08 20 10 30 12 36 14 25 22
num[2] 05 02 03 55 85 60 04 66 20 10 88 12 36 41 25 22
num[3] 01 47 03 40 11 60 04 08 20 10 30 75 36 14 15 22
.
.
.
num[N] 01 02 03 40 85 60 04 08 20 10 30 12 36 14 25 22 發表人 - tzeyang 於 2005/04/13 14:42:52
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |