子數涵數·VB——角色繪製

来源:http://www.cnblogs.com/zhangzihan/archive/2016/10/18/5971881.html
-Advertisement-
Play Games

聲明:參考了羅某某的RPG教程 PS:由於博客園不支持VB的代碼,所以可行的地方暫用VB.net代替。 一、設置透明色 1.在VB新建一個工程,在窗體Form1的屬性面板中設置其名稱為main,AutoRedraw(自動重畫)為true(真),scalemode(縮放模式)為3-pixel(像素). ...


聲明:參考了羅某某的RPG教程

PS:由於博客園不支持VB的代碼,所以可行的地方暫用VB.net代替。

 

一、設置透明色

1.在VB新建一個工程,在窗體Form1的屬性面板中設置其名稱為main,AutoRedraw(自動重畫)為true(真),scalemode(縮放模式)為3-pixel(像素).

2.使用PictureBox(圖片框)控制項,繪製一張圖片,在屬性中載入圖片(角色行走圖),修改名稱為Role,Visible(可視化) = False(假),AutoSize(自動大小) = True,AutoRedraw = True,BorderStyle(邊框類型) = 0-None(無)

3.添加一個模塊,名為Do_Draw,在模塊中輸入以下代碼。

'聲明一個公開的函數,運用API“GdiTransparentBlt”來指定一種顏色為透明色(我指定了白色)
Public Declare Function GdiTransparentBlt Lib "gdi32" (ByVal hdc1 As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal Hdc2 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal Color As Long) As Long

4.在這個模塊中,繼續輸入代碼。

GdiTransparentBlt 目的位置.hDC, X, Y, W, H, 源.hDC, 0, 0, W, H, RGB(255, 255, 255),其中X和Y是圖片的位置,而W和H是圖片的大小。

'定義一個公開的過程,名為Draw
public sub Draw()
main.Cls '對main窗體進行清屏
'繪製角色,hDC是句柄,RGB(255,255,255)是白色
GdiTransparentBlt main.hDC, 0, 0, main.Role.Width, main.Role.Height, main.Role.hDC, 0, 0, main.Role.Width, main.Role.Height, RGB(255, 255, 255)
End Sub

5.效果如下。

 

二、裁剪行走圖

1.右擊工具欄的空白部分,單擊部件,彈出部件視窗,選中Microsoft PictureClip Control,單擊確定。

2.完成後,在工具欄就會出現一個新的工具,如圖示:

3.使用裁剪控制項(就是那個新工具),隨意繪製在窗體中,在其屬性中載入圖片(角色行走圖),再設置Clos(列)和Rows(行)都為4(因為我的行走圖是4x4的)

4.在main窗體模塊中,輸入以下代碼。

'定義私有的子過程,意譯為當滑鼠點擊窗體空白處時,觸發事件
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'pictureclip1.graphiccell(下標) 來引用每一幅經過裁剪得到的圖片,其中graphiccell存放各個裁剪圖的數組,而下標是從0開始的
Role.Picture = PictureClip1.GraphicCell(0)
'調用子過程Draw
Call Draw
End Sub

5.效果如下。

 

三、滑鼠控制角色移動

1.在Do_Draw模塊中,將之前定義好的子過程進行修改,修改Public Sub Draw()為Public Sub Draw(X As Single, Y As Single),GdiTransparentBlt main.hDC, 0, 0……為GdiTransparentBlt main.hDC, X, Y……,具體如下。

'聲明一個公開的函數,運用API“GdiTransparentBlt”來指定一種顏色為透明色(我指定了白色)
Public Declare Function GdiTransparentBlt Lib "gdi32" (ByVal hdc1 As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal Hdc2 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal Color As Long) As Long
'定義一個公開的過程,名為Draw
Public Sub Draw(X As Single, Y As Single) '定義X、Y兩個單精度型變數
main.Cls '對main窗體進行清屏
'繪製角色,hDC是句柄,RGB(255,255,255)是白色
GdiTransparentBlt main.hDC, X, Y, main.Role.Width, main.Role.Height, main.Role.hDC, 0, 0, main.Role.Width, main.Role.Height, RGB(255, 255, 255)
End Sub

2.再把main窗體模塊中的Call Draw修改為Call Draw(X, Y),具體如下。

'定義私有的子過程,意譯為當滑鼠點擊窗體空白處時,觸發事件
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'pictureclip1.graphiccell(下標) 來引用每一幅經過裁剪得到的圖片,其中graphiccell存放各個裁剪圖的數組,而下標是從0開始的
Role.Picture = PictureClip1.GraphicCell(0)
'調用子過程Draw
Call Draw(X, Y)
End Sub

3.效果如下(滑鼠點擊哪裡,角色就出現在哪裡)。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 來來來,來看這篇文章: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html ...
  • 在寫PHP程式時,經常要用到include或require包含其他文件,但是各文件里包含的文件多了之後,就會產生路徑問題。 如下目錄: <web>(網站根目錄) ├<A>文件夾 │ │ │ └1.php ├<B>文件夾 │ │ │ └2.php └index.php 現在根目錄下的index.php ...
  • 一、struts2的工作原理 上圖為struts整體結構。 1.客戶端初始化一個指向servlet的請求; 2.請求通過一系列過濾器(其中的ActionContextCleanUp為可選過濾器,對struts與其他框架集成有幫助),到達StrutsPrepareAndExecuteFilter過濾器 ...
  • #查看tomcat進程ps -ef | grep tomcat#殺死進程命令kill -9 進程號#實時查看日誌信息tail -f catalina.out實例:ln -s /home/gamestat /gamestatlinux下的軟鏈接類似於windows下的快捷方式ln -s a b 中的 ...
  • 20161013問題解析請點擊今日問題下方的“【Java每日一題】20161014”查看 今日問題:請問主程式輸出結果是?(點擊以下“【Java每日一題】20161014”查看昨天問題解析) 題目原發佈於公眾號、簡書:【Java每日一題】20161014,Java每日一題20161014 每日一題最 ...
  • 1,打開window->Preferences,彈出Preferences面板。搜索Text Editors。找到background color,去掉system default。如圖: 重點:色調85,飽和度123,亮度205 2,自動生成特定代碼 :window->preferences->j ...
  • python官網:python-2.7.12.amd64.msihttps://pypi.python.org/pypi/setuptools:setuptools-28.6.0.zipsetuptools-28.6.0>python setup.py installhttps://pypi.pyt ...
  • "視頻轉字元動畫 Python 60行代碼" , 轉載請註明出處。 昨晚一朋友跟我說在網上看到了別人做的字元視頻,覺得很厲害,我於是也打算玩玩。今天中午花時間實現了這樣一個小玩意。 順便把過程記錄在這裡。 步驟 1. 把視頻的幀保存為圖片 2. 把圖片轉化為字元圖片 3. 按順序播放圖片 模塊 這個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...