• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        VB中不規則圖形熱點的完成

        VB中不規則圖形熱點的完成

        更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

        所謂圖形熱點就是指定圖形或圖像上的某部分區域,當鼠標在這部分區域上單擊或雙擊時,就像命令按鈕一樣會引發相應事件。筆者在VB 5中用Windows提供的三個API函數輕松實現了任何形狀的圖形熱點,在此具體介紹這一技術的實現步驟。
          首先在VB5中新建一"標準EXE工程",設置窗體Form1的ScaleMode屬性為3。在窗體代碼的聲明部分定義如下三個API函數:
          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
          函數說明:CreatePolygonRgn( )函數是用來創建一個圖形熱點對象,lpPoint參數為形成圖形熱點區的第一個邊界點坐標,nCount參數指出了邊界點的個數(如nCount<3時,將無法形成一個封閉區域),nPolyFillMode參數指定填充模式,該函數返回圖形熱點對象(Long型);DeleteObject( )函數用來刪除一個由hObject參數指定的對象;PtInRegion( )函數用來判斷某坐標(由參數x、y指出)是否在hRgn圖形熱 點對象指出的熱點區內,若是返回1,否則返回0。
          其次在申明部分再添入下列自定義變量:
          Const MAXCOUNT = 30 '熱點區邊界點的最多個數
          Dim RgnPt(MAXCOUNT) As POINTAPI '熱點數組
          Dim RgnObject, RgnCount, flag As Long
          然后在Form1窗體的上方創建一個PictureBox控件,設置名稱為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 '必須按下鼠標左鍵才有效
            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 = " 進入圖形熱點區!鼠標形狀變為沙漏狀!"
            P1.MousePointer = 11 '設置鼠標形狀為沙漏狀
           ElseIf flag = 1 Then
            Label1.ForeColor = 0
            Label1.Caption = " 沒有進入圖形熱點區!"
            P1.MousePointer = 0
           End If
          End Sub
          接著在P1的下方并排創建兩個CommandButton控件,Caption屬性分別設為"創建熱點"和"使用熱點", 名稱分別設為CrtRgn(對應"創建熱點")和DspRgn。在這兩個命令按鈕的下方創建一個Label控件作為操作 提示區,取默認名Label1,Caption屬性設為空,BackColor設為白色, BorderStyle屬性設為1,字體為黑體加粗小四號。雙擊CrtRgn和DspRgn,在它們的Click事件中分別添入以下代碼:
          Private Sub CrtRgn_Click()
           Dim tmp As Long
           RgnCount = 0
           tmp = DeleteObject(RgnObject)
           Label1.Caption = " 在圖像上單擊鼠標左鍵來創建圖形熱點的范圍!"+ _
            "至少應在不同位置單擊三次以上,否則形不成封閉區域!"
           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運行后,首先單擊"創建熱點"按鈕,在圖像區域內的不同位置 單擊鼠標左鍵,最好單擊三次以上,否則形不成熱點區。然后單擊"使用熱點"按鈕,在圖像框內移動鼠標,你會發現當鼠標進入熱點區后, 形狀變為沙漏狀。本文中的程序僅為演示程序,在實際應用中,可以事先創建好熱點區數組,然后在熱點區的MouseDown( )事件中添入相應的代碼,即可使用圖形熱點代替命令按鈕。
          本程序在VB5/Win 95、Win 98下通過。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久精品熟女亚洲av麻豆| 国产男女性潮高清免费网站| 亚洲婷婷国产精品电影人久久| 噼里啪啦电影在线观看免费高清| 最近2018中文字幕免费视频| 亚洲va无码手机在线电影| 男女一边桶一边摸一边脱视频免费| 亚洲午夜福利在线观看| 亚洲黄片手机免费观看| 18女人毛片水真多免费| 亚洲视频人成在线播放| 中文字幕在线成人免费看| 亚洲精品蜜桃久久久久久| 亚洲欧洲国产综合AV无码久久| 一级成人a做片免费| 国产亚洲人成A在线V网站| a毛片免费在线观看| 日韩免费一区二区三区| 久久久久亚洲AV片无码| 99视频精品全部免费观看| 亚洲国产精品一区二区久| 成年免费a级毛片免费看无码 | 成全视频免费高清 | 最新亚洲人成网站在线观看| 亚洲七七久久精品中文国产| 亚洲中文字幕无码爆乳| 免费一级毛片免费播放| 最近免费mv在线观看动漫| 免费国产成人高清在线观看麻豆 | 亚洲AV成人精品日韩一区18p| 亚洲国产成人精品青青草原| 日日夜夜精品免费视频| WWW免费视频在线观看播放| 亚洲精品自在线拍| 又粗又黄又猛又爽大片免费| 久久青青草原国产精品免费| 一本色道久久综合亚洲精品| 无人视频在线观看免费播放影院| 国产A在亚洲线播放| 亚洲免费观看视频| 亚洲youwu永久无码精品 |