如何製作不規則形狀的圖形,來供mouse點選? |
答題得分者是:ccchen
|
c905165
中階會員 ![]() ![]() ![]() 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
|
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝要作兩個圖,一樣的大小兩個TImage 一個為原圖,一個為遮罩圖, 遮罩圖黑色代表沒做用,手途成白色,頭用藍色... 用mouse點的座標到遮罩圖去看圖的顏色就知道了 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
c905165
中階會員 ![]() ![]() ![]() 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
引言:因為我試了幾個image的物件,也找了所有的屬性,找不到mask的屬性,是否請說明白一些,以便使我能順利完成任務。謝謝。引言: 如何製作不規則形狀的圖形,來供mouse點選? 像是一個人的形狀,例如說: 用mouse點頭,就能夠將Label1.Text:='頭'; 如果點手,就將Label1.Text:='手'; .....等等的功能,怎麼做到呢? 謝謝要作兩個圖,一樣的大小兩個TImage 一個為原圖,一個為遮罩圖, 遮罩圖黑色代表沒做用,手途成白色,頭用藍色... 用mouse點的座標到遮罩圖去看圖的顏色就知道了 ~~~Delphi K.Top討論區站長~~~
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩 |
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
danny
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
引言: 如何製作不規則形狀的圖形,來供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 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
c905165
中階會員 ![]() ![]() ![]() 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
但是能夠判斷出其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 發送簡訊給我 |
|
aip999
初階會員 ![]() ![]() 發表:10 回覆:63 積分:44 註冊:2002-03-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |