日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

VB中不規(guī)則圖形熱點(diǎn)的完成

VB中不規(guī)則圖形熱點(diǎn)的完成

更新時(shí)間:2022-05-16 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

所謂圖形熱點(diǎn)就是指定圖形或圖像上的某部分區(qū)域,當(dāng)鼠標(biāo)在這部分區(qū)域上單擊或雙擊時(shí),就像命令按鈕一樣會(huì)引發(fā)相應(yīng)事件。筆者在VB 5中用Windows提供的三個(gè)API函數(shù)輕松實(shí)現(xiàn)了任何形狀的圖形熱點(diǎn),在此具體介紹這一技術(shù)的實(shí)現(xiàn)步驟。
  首先在VB5中新建一"標(biāo)準(zhǔn)EXE工程",設(shè)置窗體Form1的ScaleMode屬性為3。在窗體代碼的聲明部分定義如下三個(gè)API函數(shù):
  Private Type POINTAPI
    x As Long
    y As Long
  End Type
  Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
  Private Declare Function DeleteObject Lib "gdi32"(ByVal hObject As Long) As Long
  Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long,ByVal x As Long, ByVal y As Long) As Long
  函數(shù)說(shuō)明:CreatePolygonRgn( )函數(shù)是用來(lái)創(chuàng)建一個(gè)圖形熱點(diǎn)對(duì)象,lpPoint參數(shù)為形成圖形熱點(diǎn)區(qū)的第一個(gè)邊界點(diǎn)坐標(biāo),nCount參數(shù)指出了邊界點(diǎn)的個(gè)數(shù)(如nCount<3時(shí),將無(wú)法形成一個(gè)封閉區(qū)域),nPolyFillMode參數(shù)指定填充模式,該函數(shù)返回圖形熱點(diǎn)對(duì)象(Long型);DeleteObject( )函數(shù)用來(lái)刪除一個(gè)由hObject參數(shù)指定的對(duì)象;PtInRegion( )函數(shù)用來(lái)判斷某坐標(biāo)(由參數(shù)x、y指出)是否在hRgn圖形熱 點(diǎn)對(duì)象指出的熱點(diǎn)區(qū)內(nèi),若是返回1,否則返回0。
  其次在申明部分再添入下列自定義變量:
  Const MAXCOUNT = 30 '熱點(diǎn)區(qū)邊界點(diǎn)的最多個(gè)數(shù)
  Dim RgnPt(MAXCOUNT) As POINTAPI '熱點(diǎn)數(shù)組
  Dim RgnObject, RgnCount, flag As Long
  然后在Form1窗體的上方創(chuàng)建一個(gè)PictureBox控件,設(shè)置名稱為P1 ,ScaleMode屬性為3,Picture屬性指定一幅BMP圖像。在P1的MouseMove事件和MouseDown事件中添入下列代碼:
  Private Sub P1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
   If button = 1 Then '必須按下鼠標(biāo)左鍵才有效
    RgnPt(RgnCount).x = x
    RgnPt(RgnCount).y = y
    RgnCount = RgnCount + 1
   End If
  End Sub
  Private Sub P1_MouseMove(button As Integer, shift As Integer, x As Single, y As Single)
   If PtInRegion(RgnObject, x, y) = 1 Then
    Label1.ForeColor = QBColor(12)
    Label1.Caption = " 進(jìn)入圖形熱點(diǎn)區(qū)!鼠標(biāo)形狀變?yōu)樯陈睿?quot;
    P1.MousePointer = 11 '設(shè)置鼠標(biāo)形狀為沙漏狀
   ElseIf flag = 1 Then
    Label1.ForeColor = 0
    Label1.Caption = " 沒(méi)有進(jìn)入圖形熱點(diǎn)區(qū)!"
    P1.MousePointer = 0
   End If
  End Sub
  接著在P1的下方并排創(chuàng)建兩個(gè)CommandButton控件,Caption屬性分別設(shè)為"創(chuàng)建熱點(diǎn)"和"使用熱點(diǎn)", 名稱分別設(shè)為CrtRgn(對(duì)應(yīng)"創(chuàng)建熱點(diǎn)")和DspRgn。在這兩個(gè)命令按鈕的下方創(chuàng)建一個(gè)Label控件作為操作 提示區(qū),取默認(rèn)名Label1,Caption屬性設(shè)為空,BackColor設(shè)為白色, BorderStyle屬性設(shè)為1,字體為黑體加粗小四號(hào)。雙擊CrtRgn和DspRgn,在它們的Click事件中分別添入以下代碼:
  Private Sub CrtRgn_Click()
   Dim tmp As Long
   RgnCount = 0
   tmp = DeleteObject(RgnObject)
   Label1.Caption = " 在圖像上單擊鼠標(biāo)左鍵來(lái)創(chuàng)建圖形熱點(diǎn)的范圍!"+ _
    "至少應(yīng)在不同位置單擊三次以上,否則形不成封閉區(qū)域!"
   flag = 0
  End Sub
  Private Sub DspRgn_Click()
   RgnObject = CreatePolygonRgn(RgnPt(0), RgnCount, 1)
   flag = 1
  End Sub
  最后在窗體代碼的任意位置添入Form_Load()事件:
  Private Sub Form_Load()
   ScaleMode = 3
   P1.ScaleMode = 3
  End Sub
  按F5運(yùn)行后,首先單擊"創(chuàng)建熱點(diǎn)"按鈕,在圖像區(qū)域內(nèi)的不同位置 單擊鼠標(biāo)左鍵,最好單擊三次以上,否則形不成熱點(diǎn)區(qū)。然后單擊"使用熱點(diǎn)"按鈕,在圖像框內(nèi)移動(dòng)鼠標(biāo),你會(huì)發(fā)現(xiàn)當(dāng)鼠標(biāo)進(jìn)入熱點(diǎn)區(qū)后, 形狀變?yōu)樯陈睢1疚闹械某绦騼H為演示程序,在實(shí)際應(yīng)用中,可以事先創(chuàng)建好熱點(diǎn)區(qū)數(shù)組,然后在熱點(diǎn)區(qū)的MouseDown( )事件中添入相應(yīng)的代碼,即可使用圖形熱點(diǎn)代替命令按鈕。
  本程序在VB5/Win 95、Win 98下通過(guò)。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 97se狠狠狠狠狼亚洲综合网 | 站长推荐精品午夜免费影院 | 亚洲综合欧美 | 午夜老湿机免费福利视频在线观看 | 簧 色 成 人 | 日本全黄三级在线观看 | 七次郎成人免费线路视频 | 欧美激情综合亚洲一二区 | 国产精品一区二区在线观看 | 日韩 欧美 国产 师生 制服 | 亚洲精品毛片久久久久久久 | 香港一级纯黄大片 | www.亚洲在线 | 麻豆国产精品 | 欧美高清国产在线观看 | 亚洲欧美人成网站综合在线 | 欧美骚| 久久综合给合久久狠狠狠97色 | 天堂网成人 | 欧美一区二区三区在线播放 | 91热久久免费精品99 | 6677免费观看在线视频 | 日韩中文视频 | 四虎www成人影院免费观看 | www.亚洲精品 | 欧美在线精品一区二区三区 | 中文字幕在线视频一区 | 免费在线黄视频 | 伊人久久综在合线亚洲2019 | 日韩在线中文 | 免费看a| 日本在线一区二区三区 | 日本高清视频在线播放 | 玖色网| 精品亚洲成a人片在线观看 精品亚洲成a人在线播放 | 99久久免费精品 | 日韩精品福利视频一区二区三区 | 亚洲在线免费观看 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 国产精品1区 | 亚洲国产色综合有声小说 |