TSelection 的操作問題 |
答題得分者是:JamesJuan
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位!
有關 FiM2 的 TSelection 的用法, 不知各位有沒有使用上的實務經驗, 我已經查了一個星期的網路文, google, yahoo等 EMBD 對於 TSelection 的討論少的可憐, TSelectionPoint 也只有一篇, 我現在想用 TSelection 對於 Image 進行圖片的 Crop 功能, 我可以取得 TSelection的 Width, Height, Position, 但如何讓 Image 可以按我所設定的 Range 進行截取部份圖片, TImage 我不是很懂 有 TImage.Bitmap.setsize, resize, Canvas 等等的提供, 不知各位可否提點一二, 感謝 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
無意間在網路找到一篇討論timage的程式, 後來我發現
TImage.Width 及 TImage.Bitmap.Width 不一樣 假設在 TLayer 中放一個 TImage, 320*200, 然後 Loadfromfile 一個jpg圖檔, 可能有 1024*768, 這時讀取 timage.width = 320, 但如果讀取 timage.bitmap.width 並不是320, 也不是 1024, 可是會比 320大 而TSelection 是以螢幕的痤標在計算, 也就是如果 TSelection.width = 200, 就等於 TImage.Width=200 但TSelection.position.X =100 卻又不一定等於 Image.Posititon.x 雖然這些數據顯示似乎有一些關連可整理, 但又很難去分辨清楚 所以現在搞得我一個頭兩個大, 不知道對 TImage 有比較深入研究的前輩, 可否指點一二... 感恩~~ |
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
這就是我要的, 其實這篇我也看過了, 但....
===================引 用 Main Chen 文 章=================== 這裡有視頻(但沒有源始碼)不過還是能參考: v.youku.com/v_show/id_XNjgwNTg4NDY4.html |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
James 您好:
按你提供的內容, 我實作後如下圖(左中右, 右為結果), 不知道那裡出問題了, 能否再向您請教一下, 謝謝! 程式碼如下 Image2 是已事位放置在畫面的元件, Image3是動態被建立的TBitmap, CropSelect 是 TSelection 元件 我是利用 image2先複製到 image3, 再利用 Image3 做 Crop 的功能, 然後傳回 image2 img3Rect := TRectF.Create(0,0,Image2.Bitmap.Width, Image2.Bitmap.Height); img2Rect := TRectF.Create(CropSelect.Position.X, CropSelect.Position.Y, CropSelect.Width, CropSelect.Height); Image3 := TBitmap.Create; Image3.Assign(Image2.Bitmap); Image2.Bitmap.Width := Trunc(CropSelect.Width); Image2.Bitmap.Height := Trunc(CropSelect.Height); if Image2.Canvas.BeginScene then try Image2.Bitmap.Canvas.DrawBitmap(Image3, img3Rect, img2Rect, 1); finally Image2.Canvas.EndScene; end; Image2.Bitmap.SaveToFile(fimg2); Image3.Free; |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
已經找到方法解決了, 並釋放了程式
在此感謝各方大力協助, 尤其是 James提供的那段code, 給了很大的幫忙 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=105804
編輯記錄
P.D. 重新編輯於 2014-03-27 14:59:06, 註解 無‧
|
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |