请问如何做图片按钮(VB.net)
一张图上有不同的热点,鼠标放上去后图像变化....VB.net
知道有imageBotton的控件可用,可是那是web控件,怎么用到windows程序中,谢谢...
问题点数:20、回复次数:5Top
1 楼dgz988(雨潇)回复于 2005-02-26 07:37:36 得分 0
不会,只能期待别人来回答。。
有一个想法,不知道可不可以实现:就是设置一符图,然后对图的各点的相对坐标来找出来,然后在鼠标事件中来看当前的位置在哪个范围内。。。不过这样好像很麻烦。。Top
2 楼lyj670(空中一只鸟)回复于 2005-02-26 08:27:05 得分 0
我也在关注这个问题,本来我是想用做成网页,再用程序调用,然后再从网页中取出返回参数这样做的,看到你在问,希望也能给我些灵感。Top
3 楼amwicfai(蓬莱病书生)回复于 2005-02-26 08:53:57 得分 0
楼主,以我的理解,你只要在图片上放label控件,然后将text清空,背景设为透明,再捕捉label的鼠标事件,这样行否?Top
4 楼lyj670(空中一只鸟)回复于 2005-02-26 09:37:22 得分 0
我考虑的关键是这个热点可能是不规则的,如果用规则的四方形,则有很多办法可以解决。
比如用热点:
1 定义热点区域,可以用RECTANGLE
2 添加MOUSE_MOVE事件,判断鼠标是否是在RECTANGLE内,如为TRUE则将更必CURSOR为手型.
3 添加MOUSE_DOWN事件,MOUSE.BUTTON=LEFT 及鼠标点击坐标是否是区域内,如为TRUE,则处理你想做的事.
测试代码:
Dim HotPoint As New Rectangle(10, 10, 20, 20)
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If e.X > HotPoint.X And e.X < HotPoint.X + 20 And e.Y > HotPoint.Y And e.Y < HotPoint.Y + 20 Then
PictureBox1.Cursor = Cursors.Hand
Else
PictureBox1.Cursor = Cursors.Default
End If
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = MouseButtons.Left And e.X > HotPoint.X And e.X < HotPoint.X + 20 And e.Y > HotPoint.Y And e.Y < HotPoint.Y + 20 Then
MessageBox.Show("You clicked hotpoint")
End If
End Sub
Rectangle是一个代表矩形的结构类型。有两个构造函数,具体可以看看SDK。如果要定义比较复杂的区域热点,请使用Region类型。
定义了一个rectangle后就等于定义了一个热点,因为rectangle中包含一个坐标信息,和一个大小信息,通过这两个信息可以算出Rectangle的四个点的坐标,在Mouse_Move和Mouse_down事件中判断一下鼠标位置是否在四个点的范围中即可。Top
5 楼ysh9922(煦)回复于 2005-02-26 13:23:42 得分 20
studyTop




