看板 GameDesign 關於我們 聯絡資訊
※ 引述《GoodTauSo (Do live Loop)》之銘言: : 歹勢,我在把問題描述詳細一點, : 這次我google了一隻瑪莉歐, : 首先我用photoimpact存成gif,並設定透明色,如下圖 : http://www.wretch.cc/album/show.php?i=kensirom&b=11&f=1208290598&p=5 : 接著我用了兩個picturebox分別代表兩個角色, : 使用transparent屬性分別將兩個控制項背景變成透明,語法如下 : PictureBox1.BackColor = System.Drawing.Color.Transparent : PictureBox2.BackColor = System.Drawing.Color.Transparent : 執行效果如下,兩隻瑪莉歐的背景變透明了 : http://www.wretch.cc/album/show.php?i=kensirom&b=11&f=1208290597&p=4 : 後來發現,其實它的透明只是去截取背景圖來補欲透明的顏色,不是真正透明 : 只要兩個角色一接近,就破功了 : http://www.wretch.cc/album/show.php?i=kensirom&b=11&f=1208290595&p=2 : 實際上我想要的效果應該是這樣 : http://www.wretch.cc/album/show.php?i=kensirom&b=11&f=1208290596&p=3 : 這樣角色之間才能互動(攻擊,聊天,交易等...) : 要如何做到真正的透明呢? : 工具:VB.NET 2008 本來想用推文的 發現會寫一堆XD.. 最近剛好有在用c#寫editor 所以有用到這些東西 我直接說我的作法好了.. 先擺1個picturebox到form上面去 在form的建構式裡面或form_load之類的function寫: picturebox.clientsize = new size(你的視窗大小) 這樣 你的picturebox就跟視窗一樣大了 接著寫picturebox.image = new bitmap(picturebox.clientsize) 之後我們畫圖都是畫到這個bitmap上面去 再來把會用到的圖都讀進來 bitmap mariobitmap = new bitmap("mario.gif"); bitmap background = new bitmap("bg.png"); 最後宣告一個Graphics物件 Graphics g = Graphics.FromImage(picturebox.image); g.Clear(); 畫圖的時候 考慮誰要蓋誰 先畫的會被蓋 所以先畫底圖 人物的話就看程式先處理誰就先畫誰 g.DrawImage(background, .....); g.DrawImage(mariobitmap, .....); g.DrawImage(mariobitmap, .....); 大致上就這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.203.198
Splash5:至於其它細節我想給原po去思考了:p 04/19 20:39
GoodTauSo:感謝您的方式讓我參考^^" 04/20 10:39
GoodTauSo:照這個方式,所有的圖像都會畫成一張圖在picturebox 或 04/20 17:56
GoodTauSo:form上 , 這樣如果要讓角色移動 , 就要全部刷掉重畫 . 04/20 18:00
GoodTauSo:而沒有分圖層 , 譬如說 最底層是地圖 , 第二層是角色 , 04/20 18:03
GoodTauSo:第三層是天氣(雲 , 下雨之類...) , 這樣就可以設定每個 04/20 18:04
GoodTauSo:物件的屬性(ex:角色的圖形 , MP HP , 雲的移動速度等.) 04/20 18:05
GoodTauSo:就是希望構成的"圖" 是許多物件放在一起的 , -而非全部 04/20 18:06
GoodTauSo:draw在一張上 . 04/20 18:06
Splash5:那就要靠你自己去管理這些物件的優先順序了~ 04/20 19:29
Splash5:像我自己寫的東西 會有一個layer管理 會記住哪層有那些 04/20 19:29
Splash5:物件 然後依照我定義的layer優先順序 由底層畫到上層 04/20 19:30
Splash5:一般遊戲大多也是這種作法 04/20 19:31