- 浏览: 204748 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (137)
- Android (12)
- linux (9)
- rails (3)
- 经验总结 (39)
- 工作、项目 (9)
- 生物信息,blast (2)
- java (12)
- 论点 (1)
- sql (9)
- javascript (1)
- vb (8)
- 发布的程序 (1)
- 感动编程 (1)
- asp (3)
- excel (1)
- iis (1)
- access (2)
- matlab 图像 (2)
- matlab (2)
- jQuery (2)
- MAMP PRO (1)
- orcal mac os python (1)
- regular expression (1)
- linux grep awk (1)
- numpy (1)
- h5py (1)
- Heritrix (1)
- servlet (1)
- hadoop (1)
- copyFromLocal (1)
- 气象 (0)
最新评论
-
xiaoyao3857:
这是什么原理呢?还有,为什么我设好之后,运行appletvie ...
警告:不能读取 AppletViewer 的属性文件解决 -
阿浊I:
I think so,this work had done a ...
How to change max_allowed_packet value in mysql? -
zhuorulin:
丁林.tb 写道 If you don't use globa ...
How to change max_allowed_packet value in mysql? -
丁林.tb:
If you don't use global or use ...
How to change max_allowed_packet value in mysql?
所谓图形热点就是指定图形或图像上的某部分区域,当鼠标在这部分区域上单击或双击时,就像命令按钮一样会引发相应事件。笔者在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下通过。
发表评论
-
pygrib basemap matlibplot环境安装
2017-07-14 10:47 0话不多说,直奔主题 我是再suse下离线安装的,所以搞得 ... -
spring 定时任务
2015-09-16 12:44 969这里使用的是Spring2.5,需要的jar包:spring ... -
三年博士干的事
2014-12-22 10:08 709见附件墙报 所谓的利用matlab,c++,php,基于 ... -
文本分类入门(番外篇)特征选择与特征权重计算的区别
2013-05-22 09:02 1997在文本分类的过程中 ... -
文本分类入门(十一)特征选择方法之信息增益
2013-05-22 09:03 1730前文提到过,除了开方检验(CHI)以外,信息增益(IG ... -
SVM入门(十)将SVM用于多类分类
2013-05-22 09:03 851从 SVM的那几张图可以看出来,SVM是一种典型的两类 ... -
SVM入门(九)松弛变量(续)
2013-05-22 09:03 728接下来要说的东西其实不是松弛变量本身,但由于是为了使用 ... -
SVM入门(八)松弛变量
2013-05-22 09:03 983现在我们已经把一个 ... -
SVM入门(七)为何需要核函数
2013-05-19 16:27 911生存?还是毁灭?——哈姆雷特 可分?还是不可分?——支持 ... -
SVM入门(六)线性分类器的求解——问题的转化,直观角度
2013-05-19 16:26 885让我再一次比较完整 ... -
SVM入门(五)线性分类器的求解——问题的描述Part2
2013-05-19 16:25 818从最一般的定义上说 ... -
SVM入门(四)线性分类器的求解——问题的描述Part1
2013-05-19 16:25 839上节说到我们有了一个线性分类函数,也有了判断解优劣的标准— ... -
SVM入门(一)至(三)Refresh
2013-05-19 16:24 824(一)SVM的八股简介 ... -
matlab文件及文件夹操作
2013-02-23 13:07 84331.matlab中读取一行多个 ... -
matlab 矩阵求和计算
2012-11-10 12:50 1832matlab中针对的数据大多是以矩阵形式来处理,求和函数是su ... -
vb动态数组
2012-07-19 21:28 949最近老板逼着弄GIS ,找到了mapobject是空间,使用过 ... -
关于 surfaceview 背景覆盖的问题
2012-02-16 15:18 2974本人开发过程中,发现出了黑色,不能设置其他颜色,如果设置了,就 ... -
关于 Failed to start monitoring 0A3AAA401902A029 错误
2012-02-12 10:07 2224在android开发的时候,在前面的文章中有说到连接真机开发, ... -
两个activity之间的Intent 传值
2012-02-11 23:32 1806看了很多,总结以下首先activity1和activity2之 ... -
VB中的图像用HScroll1,VScroll1 空间如何操作
2006-03-27 18:06 1148试过了,绝对正确的哦,呵呵,前提是图像要足够大的看不到,然后才 ...
相关推荐
### 知识点详解:VB中不规则图形热点的实现 #### 一、背景介绍 在Visual Basic(简称VB)编程环境中,实现图形界面交互功能是常见需求之一。特别是对于不规则图形,如何准确地判断鼠标光标是否位于该图形内部,即...
在VB.NET中实现不规则图形的碰撞检测是一个有趣且实用的技术挑战,特别是在开发游戏或交互式应用程序时。本文将深入探讨这一主题,并基于提供的描述,分析实现这一功能的关键知识点。 首先,我们要理解“不规则图形...
实现VB不规则窗体主要涉及以下几个关键技术点: 1. **透明度处理**:Windows API提供了一个名为`SetWindowRgn`的函数,可以设置窗口的区域,使其具有透明或半透明效果。通过自定义窗体的区域,可以实现非矩形的形状...
在VB(Visual Basic)编程环境中,生成规则图形是一项常见的任务,尤其对于初学者来说,它有助于理解基础的图形绘制和编程逻辑。VB源码-图形处理这个标签表明我们讨论的内容将集中在利用VB代码来实现图形的创建。在...
在VB(Visual Basic)编程中,创建不规则窗体是一个有趣且富有挑战性的任务,它涉及到Windows API(应用程序接口)的使用以及图形处理技术。不规则窗体允许开发者设计出打破常规,拥有独特外观和交互体验的应用程序...
下面将详细解释如何在VB中实现不规则窗体的创建。 1. **GDI+库的使用**: VB6本身并不直接支持不规则窗体,但可以通过引入GDI+图形接口来实现。GDI+是Windows系统中的一个强大的图形绘制库,它提供了丰富的绘图...
在VB(Visual Basic)编程环境中,`FillRgn`函数是一种用于填充指定区域的重要图形绘制技术,尤其在处理不规则图形时非常有用。本示例`fillrgn.zip_FILLRGN_vb FillRgn_不规则图形_图形 填充_填充`将指导我们如何在...
VB 如何实现随机图形验证码 VB 如何实现随机图形验证码
"VB制作个性化图形窗体源代码"是一个关于如何利用VB来构建非标准、不规则形状的图形化窗体的资源。这个压缩包包含了实现这一目标的源代码,对于学习和理解VB图形化编程非常有帮助。 首先,VB中的窗体是应用程序的...
在VB(Visual Basic)编程环境中,我们可以利用内置的...通过熟练掌握这些函数和方法,不仅可以实现"Vb画圆并组合成规则图形"这样的练习,还能在更广泛的项目中发挥创造力,例如游戏开发、数据可视化、用户界面设计等。
VB不规则区域的填充通常涉及到图形API的使用,如GDI+(Graphics Device Interface Plus)或者WinAPI中的FillRgn函数。下面将详细介绍这个主题,以及如何实现不规则区域的填充。 首先,我们要理解什么是不规则区域。...
在VB中,可以结合`For...Next`循环和`If...Then`语句实现这个目标。 首先,我们需要了解`Print`方法的基本语法。在VB6中,`Print`方法的使用可能如下: ```vb Print [;] expression [[;] ...] ``` 这里,`...
在VB(Visual Basic)编程环境中,我们可以利用GDI+(Graphics Device Interface Plus)库来实现图形的绘制。这个库提供了丰富的函数和方法,使我们能够创建各种形状,如五角星、椭圆以及填充图形,甚至可以绘制出...
本实例代码“VB实现窗体中可以移动的图形Move实例代码”正是针对这一需求的一个示例,它展示了如何利用VB的Move方法来实现图形对象在窗体上的自由移动。 在VB中,图形的移动通常是通过对控件的位置属性进行修改来...
VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02图形窗体VB编程源代码 02...
这一部分主要利用了VB中的`Image`控件来实现图形的动态滚动显示效果。`Image`控件具有自动缩放所显示图形的功能,并且具有`Stretch`属性。当`Stretch`属性设置为`False`时(这是默认值),`Image`控件会根据图片的...
在这个"一个趣味的VB图形窗口的实现实例"中,开发者通过巧妙地利用图片框(PictureBox)控件,实现了像素级别的窗口定制,并能够动态调整窗口大小以适应图片,最终创建了一个不规则形状的窗口。以下是对这个实例的...
《VB实现的图形用户界面详解》 VB,全称Visual Basic,是Microsoft公司推出的一种面向对象的编程语言,尤其在创建图形用户界面(GUI)方面表现出色。图形用户界面是现代软件的重要组成部分,它使用户能够通过直观的...
在VB.NET 2008中,我们可以通过编程实现不规则窗体,即非标准矩形形状的窗口,这在创建具有个性化外观的应用程序时非常有用。这种技术通常依赖于GDI+(Graphics Device Interface Plus)图形库,它是.NET Framework...
VB6.0是Microsoft Visual Basic的一个老版本,虽然它不支持原生的3D图形功能,但可以通过与其他库如DirectX结合来实现3D图像编程。 DirectX 9是微软开发的一套应用程序接口(API),主要用于多媒体,尤其是游戏和...