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

如何製作不規則形狀的圖形,來供mouse點選?

答題得分者是:ccchen
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-14 18:27:46 IP:203.204.xxx.xxx 未訂閱
如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-14 21:13:34 IP:61.219.xxx.xxx 未訂閱
引言: 如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝
要作兩個圖,一樣的大小兩個TImage 一個為原圖,一個為遮罩圖, 遮罩圖黑色代表沒做用,手途成白色,頭用藍色... 用mouse點的座標到遮罩圖去看圖的顏色就知道了 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-14 22:39:38 IP:203.204.xxx.xxx 未訂閱
引言:
引言: 如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝
要作兩個圖,一樣的大小兩個TImage 一個為原圖,一個為遮罩圖, 遮罩圖黑色代表沒做用,手途成白色,頭用藍色... 用mouse點的座標到遮罩圖去看圖的顏色就知道了 ~~~Delphi K.Top討論區站長~~~
因為我試了幾個image的物件,也找了所有的屬性,找不到mask的屬性,是否請說明白一些,以便使我能順利完成任務。謝謝。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-15 08:02:51 IP:61.219.xxx.xxx 未訂閱
領航天使漂亮的想法 遮罩圖是要自己做的. 你先拋開遮罩圖不管,假設你的原圖(人形圖),手為白色,頭為藍色,其他均為黑色. 在mouseup時, 是否可由Mouse座標所在之顏色知道所點之部位. 由於原圖可能必須呈現原貌, 無法如此以顏色區格清楚, 因此另Create一個外形完全相同之圖, 以不同顏色畫分區域做為Mask(當然RunTime為visblie:=False), 點選時參考此圖同座標位置之color
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-15 09:50:00 IP:210.202.xxx.xxx 未訂閱
引言: 如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝
這有幾種作法: A1. 計算處理遮罩, 前面已經有高手回應了不多談. A2. 計算 Mouse Click 時所在座標, 再算落在那一區(您可以參考 Design Game 方面有關碰撞章節) B1. 使用以下元件 http://www.vclxx.org/DELPHI/D32FREE/JVBITMAPBUTTON.ZIP TjvBitmapButton 是加強版的 TButton 元件,能夠依照 .BMP 圖形作出不規則形狀的按鈕 ( 1.0 版,附原始程式碼 ),作者 : Jan Verhoeven。 B2. 將頭,手分解各作成一個個的 TjvBitmapButton, 將他們組成您要的人型, 然後您只要在 OnClick 中處理即可. 如果您有興趣可以研究 TjvBitmapButton 的 Source code, 他包括了 A1 的處理.
------
將問題盡快結案也是一種禮貌!
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-19 08:23:49 IP:203.204.xxx.xxx 未訂閱
再請問,如果弄一個image的物件上去,mouse移到上面時,能夠判別其座標x,y,但是能夠判斷出其pixel嗎?像素的顏包要如何判斷呢? 謝謝!
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-19 10:13:31 IP:203.217.xxx.xxx 未訂閱
image1:TImage; image1.canvas.pixels[x,y]
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-19 12:01:04 IP:203.204.xxx.xxx 未訂閱
引言: image1:TImage; image1.canvas.pixels[x,y]
謝謝您,再請問,要如何將之指定值到字串呢? 因為Label1.Caption:=image1.canvas.pixels[x,y];會造成錯誤。 就是說資料型別的轉換,Tcolor要如何轉成String;?
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-10-20 11:34:55 IP:203.217.xxx.xxx 未訂閱
但是能夠判斷出其pixel嗎?像素的顏包要如何判斷呢? 你不是要判斷像素的顏色嗎, pixels[x,y]就是Tcolor, Tcolor是一個integer Label1.Caption:=image1.canvas.pixels[x,y] 當然不對, 你的目的是什麼? 若是要show出顏色, 由於TColor是integer不是Enum 無法很容易show出如clRed等之colorname, 直接show出RgbValue倒是可以 Label1.Caption:=inttostr(image1.canvas.pixels[x,y]); 你要不怕麻煩也可以
case  image1.canvas.pixels[x,y] of
  clRed: Label1.Caption:='紅色';
  clblue: Label1.Caption:='藍色';
  ...
end;
發表人 - CCCHEN 於 2002/10/20 11:37:41
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-11-17 16:47:20 IP:203.204.xxx.xxx 未訂閱
因為吾人技巧不足,無法使用天使所述的mask技術。 到最後,我是用一種投機的方式,就是頭、手、腳...各部位用不同的color值,但是因為color很接近所以眼睛無法看出來。嘻..... 不過還是很想要學會什麼是mask,做法是什麼。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
aip999
初階會員


發表:10
回覆:63
積分:44
註冊:2002-03-29

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-11-19 01:30:57 IP:218.187.xxx.xxx 未訂閱
引言: 因為吾人技巧不足,無法使用天使所述的mask技術。 到最後,我是用一種投機的方式,就是頭、手、腳...各部位用不同的color值,但是因為color很接近所以眼睛無法看出來。嘻..... 不過還是很想要學會什麼是mask,做法是什麼。
你把圖的部份都用clWhite 以外的顏色 然後用PtinRect 配合 image1.canvas.pixels[x,y]!=clWhite 應該就可以了
系統時間:2024-05-05 3:02:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!