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

取出圖片中的圓形區域

答題得分者是:AndrewK
BCBNPC
一般會員


發表:14
回覆:15
積分:5
註冊:2008-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-27 18:21:35 IP:61.224.xxx.xxx 訂閱
大家好:

假設我 new 出一個 Graphics::TBitmap *bmp;
而bmp讀取一張 bmp 影像後

我希望能夠將其某範圍的圓形影像取出來,並存成檔案(底色白色,或者可自訂)
該如何使用呢?

我大致上的方式是:


[code cpp]
Graphics::TBitmap *bmp = new Graphics::TBitmap;
Canvas->Brush->Bitmap = testBMP;
Canvas->Brush->Bitmap->LoadFromFile( "C:\\test.bmp" );
Canvas->Ellipse( 107, 25, 545, 460 );
Canvas->Draw( 600, 25, testBMP );

TRect rec;
rec = Canvas->ClipRect;
bmp ->Canvas->DrawFocusRect( rec );
bmp ->SaveToFile( "C:\\test2.bmp" );
[/code]

雖然在 Canvas 的部分有將圓形區域畫在 Form 上,
可是存檔時,還是跟原來的影像沒有分別
需要如何處理呢??
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-27 21:55:28 IP:115.43.xxx.xxx 訂閱
1.bitmap 寬、高 不同於 form 的寬、高
可以 new 一個轉換後的 TBitmap
重新設定寬高
desbmp->Width = rec.Width();
desbmp->Height = rec.Height();

2.將 DrawFocusRect 以 CopyRect 取代

如此是將 form 的畫面完全拷貝
如果只是要儲【畫的東西】,建議就不要以 form 來當畫布
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
BCBNPC
一般會員


發表:14
回覆:15
積分:5
註冊:2008-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-29 09:38:20 IP:61.224.xxx.xxx 訂閱
原本我也是希望透過CopyRect來實現
最後採用此篇文章
http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=46356
最後有實做出來了

感謝大大^^
系統時間:2024-04-25 21:11:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!