請問Image1存入TPoint B[400][400]再顯示於Image2 怎麼變這樣 |
答題得分者是:ikk
|
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
請問Image1存入TPoint B[400][400]再顯示於Image2 怎麼變成背景都是紅色
Graphics::TBitmap *TheBitmap,*TempBitmap; int x,y; Byte *ptr1,*ptr2; TempBitmap=new Graphics::TBitmap(); TheBitmap=Image1->Picture->Bitmap; TheBitmap->PixelFormat=pf8bit;//這行若是圖片是黑白一定要 TempBitmap->Width=TheBitmap->Width; TempBitmap->Height=TheBitmap->Height; TheBitmap->PixelFormat=pf8bit; ........ ........略過 for(j=0;j<400;j ) { ptr1=(Byte*) TheBitmap->ScanLine[j]; for(i=0;i<400;i ) { TempBitmap->Canvas->Pixels [B[j][i].x][B[j][i].y]=ptr1[i]; } } Image2->Picture->Bitmap=TempBitmap; |
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
Canvas->Pixels 是 TColor
TColor 需要 3 種顏色 可由GetRValue, GetGValue, GetBValue取出R,G,B三種顏色 #define GetRValue(rgb) ((BYTE) (rgb)) #define GetGValue(rgb) ((BYTE) (((WORD) (rgb)) >> 8)) #define GetBValue(rgb) ((BYTE) ((rgb) >> 16)) 所以你只填進byte 就是 紅色資料. 建議你取出點時, 用TColor來存放.
------
FPGA驗證, FPGA開發平台, http://smims.com |
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
Image1 Assign Image2 我會 ,但是你說的Assign to TPoint B[400][400] 要怎麼做
sorry...我真的是剛學影像新手 ....可以請再說清楚點嗎 有板友之前提供我要這樣做
編輯記錄
eulor2000 重新編輯於 2009-02-24 23:52:20, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
===================引 用 ikk 文 章=================== 應該是存入 TColor B[400][400]; B[i][j] = Form1->Image1->Canvas->Pixels[i][j]; Form1->Image2->Canvas->Pixels[i][j] = B[i][j] 首先謝謝你再次指導, 你的方法我試了不行,會出現" cannot TColor to TPoint " message 因為我當初是宣告TPoint B[400][400] 矩陣 TPoint是螢幕上某Pixels 位置 ,我的程式就是TPoint B[400][400] 存放計算完圖片新的位址,再將Image1照片寫入TPoint B[400][400] 再存到Image2產生新運算照片,現在問題是出在Image1 搬過去像素顏色顯示不對....
編輯記錄
eulor2000 重新編輯於 2009-02-25 17:08:07, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
===================引 用 ikk 文 章=================== 我想你搞錯 TPoint和TColor了吧... 既然是新的位址, 跟顏色應該扯無上關係.. TColor 當然無法存入TPoint. 你的意思應該是 根據TPoint B陣列的座標值將Image1的pixel放入Image2. 是嗎??------->沒錯這正是我希望的....下面是我原始碼請幫我指導看一下 void __fastcall TForm1::Button1Click(TObject *Sender) { Refresh(); Graphics::TBitmap *TheBitmap,*TempBitmap; int x,y; Byte *ptr1,*ptr2; TempBitmap=new Graphics::TBitmap(); TheBitmap=Image1->Picture->Bitmap; TheBitmap->PixelFormat=pf24bit;//這行若是圖片是黑白一定要 TempBitmap->Width=TheBitmap->Width; TempBitmap->Height=TheBitmap->Height; TheBitmap->PixelFormat=pf8bit; float t=0,u=0,u2,t2,u_1,u_2,t_1,t_2; int i,j; for(j=0;j<=400;j ) { for(i=0;i<=400;i ) { u2=u*u; //u^2 u_1=1-u; //1-u u_2=u_1*u_1; //(1-u)^2 t2=t*t; //t^2 t_1=1-t; //1-t t_2=t_1*t_1; //(1-t)^2 // 本段是計算新的在螢幕上某一點位置存入 TPoint B[400][400]; B[j][i].x=(int)(u_2*t_2*p[0].x) (u_2*2*t*t_1*p[1].x) (u_2*t2*p[2].x) (2*u*u_1*t_2*p[3].x) (2*u*u_1*2*t*t_1*p[4].x) (2*u*u_1*t2*p[5].x) (u2*t_2*p[6].x) (u2*2*t*t_1*p[7].x) (u2*t2*p[8].x); B[j][i].y=(int)(u_2*t_2*p[0].y) (u_2*2*t*t_1*p[1].y) (u_2*t2*p[2].y) (2*u*u_1*t_2*p[3].y) (2*u*u_1*2*t*t_1*p[4].y) (2*u*u_1*t2*p[5].y) (u2*t_2*p[6].y) (u2*2*t*t_1*p[7].y) (u2*t2*p[8].y); t=t 0.0025; } t=0; u=u 0.0025;; } for(j=0;j<400;j ) { ptr1=(Byte*) TheBitmap->ScanLine[j]; for(i=0;i<400;i ) { // 本段是把Imge1上每個像素填入新的位置 TPoint B[400][400]; TempBitmap->Canvas->Pixels [B[j][i].x][B[j][i].y]=ptr1[i]; //關鍵出在這行為何我將TheBitmap每點pixels 搬過去後顯示確有問題 } } Image2->Picture->Bitmap=TempBitmap; delete TempBitmap; }
編輯記錄
eulor2000 重新編輯於 2009-02-25 21:36:59, 註解 無‧
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
[code cpp] for(j=0;j<400;j ) { //ptr1=(Byte*) TheBitmap->ScanLine[j]; for(i=0;i<400;i ) { // 本段是把Imge1上每個像素填入新的位置 TPoint B[400][400]; TempBitmap->Canvas->Pixels [B[j][i].x][B[j][i].y]=TheBitmap->Canvas->Pixels[j][i]; } } [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com |
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
|
ikk
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
eulor2000
一般會員 ![]() ![]() 發表:51 回覆:34 積分:17 註冊:2008-11-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |