全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:926
推到 Plurk!
推到 Facebook!

滑鼠擷取部分圖形區域一問

答題得分者是:RaynorPao
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-11 17:44:12 IP:163.28.xxx.xxx 未訂閱
小弟看完 2003/07/16 RaynorPao 版主分享的 "以滑鼠截取 Image 的部分區域" 程式後 發現若將原來 400*400的bmp 換成 640*480的bmp 所顯示的圖形會失真 我嘗試改程式中的 #define IMAGE_WIDTH 400 #define IMAGE_HEIGHT 400 但是沒用~~ 除此之外找不出其它原因了 請各位高手多多指教 謝謝!! 以下是RaynorPao 版主分享的檔案目錄 http://delphi.ktop.com.tw/loadfile.php?TOPICID=10677695&CC=238805
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-11 19:54:05 IP:61.221.xxx.xxx 未訂閱
引言: 小弟看完 2003/07/16 RaynorPao 版主分享的 "以滑鼠截取 Image 的部分區域" 程式後 發現若將原來 400*400的bmp 換成 640*480的bmp 所顯示的圖形會失真 我嘗試改程式中的 #define IMAGE_WIDTH 400 #define IMAGE_HEIGHT 400 但是沒用~~ 除此之外找不出其它原因了 請各位高手多多指教 謝謝!! 以下是RaynorPao 版主分享的檔案目錄 http://delphi.ktop.com.tw/loadfile.php?TOPICID=10677695&CC=238805
williams8807 你好: 因為原來 TImage 的 Stretch 屬性已經被設為 true,所以如果你把 TImage 長 跟寬改變的話,當然會造成圖形失真的現象 (原本載入的圖檔長x寬=400x400, 長寬比為 1:1;若長x寬改成 640x480,長寬比變為 4:3),所以,你可以利用某 個影像處理軟體 (例如: Photoshop, PhotoImpact,...),自己做一個長x寬為 640x480 的 bitmap 載入以後應該就不會有問題了 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-11 20:30:03 IP:163.28.xxx.xxx 未訂閱
圖為小畫家所繪的640*480 bmp    這是載入後尚未失真的圖(注意黑色外框) 當用滑鼠在圖檔上按左鍵或按右鍵圈選時,圖形左邊和下邊的黑色框已經超出範圍了
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-11 21:12:32 IP:61.221.xxx.xxx 未訂閱
引言: 圖為小畫家所繪的640*480 bmp 這是載入後尚未失真的圖(注意黑色外框) 當用滑鼠在圖檔上按左鍵或按右鍵圈選時,圖形左邊和下邊的黑色框已經超出範圍了
williams8807 你好: 如果你要把載入的圖檔改成 640x480 的話,當然也不可以忘記要調整所有相對 元件的大小,而且~~如果把圖檔的大小改成 640x480 的話,對一般的解析度而 言 (1024x768),會造成整個 Application 的寬度超出螢幕的顯示範圍,所以, 我在此以載入 400x300 的圖檔為例,其實只要稍微修改一下程式碼就可以 < class="code"> #define IMAGE_WIDTH 400 //#define IMAGE_HEIGHT 400 #define IMAGE_HEIGHT 300 void __fastcall TForm1::FormCreate(TObject *Sender) { Panel1->Left=8; Panel1->Top=32; Panel1->Width=IMAGE_WIDTH+2*2; Panel1->Height=IMAGE_HEIGHT+2*2; Panel1->DoubleBuffered=true; Panel2->Left=8+Panel1->Width+8; Panel2->Top=32; Panel2->Width=IMAGE_WIDTH+2*2; Panel2->Height=IMAGE_HEIGHT+2*2; Image1->Width=IMAGE_WIDTH; Image1->Height=IMAGE_HEIGHT; Image1->Left=(Panel1->Width-Image1->Width)/2; Image1->Top=(Panel1->Height-Image1->Height)/2; Image1->Stretch=true; // Image1->Picture->Bitmap->LoadFromFile("16bit-400x400.bmp"); Image1->Picture->Bitmap->LoadFromFile("16bit-400x300.bmp"); PaintBox2->Width=IMAGE_WIDTH; PaintBox2->Height=IMAGE_HEIGHT; PaintBox2->Left=(Panel1->Width-PaintBox2->Width)/2; PaintBox2->Top=(Panel1->Height-PaintBox2->Height)/2; Image3->Width=IMAGE_WIDTH; Image3->Height=IMAGE_HEIGHT; Image3->Left=(Panel2->Width-Image3->Width)/2; Image3->Top=(Panel2->Height-Image3->Height)/2; Image3->Stretch=true; Image3->Canvas->Brush->Color=clWhite; Image3->Canvas->FillRect(Rect(0, 0, Image3->Width, Image3->Height)); Form1->ClientWidth=8+Panel1->Width+8+Panel2->Width+8; Form1->ClientHeight=32+Panel1->Height+8; Form1->Left=(Screen->Width-Form1->Width)/2; Form1->Top=(Screen->Height-Form1->Height)/2; } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
williams8807
一般會員


發表:40
回覆:37
積分:15
註冊:2003-11-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-11 22:37:35 IP:163.28.xxx.xxx 未訂閱
謝謝 RaynorPao 解惑!!    問題已經解決~~    
系統時間:2024-05-10 23:44:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!