标题:如何改变鼠标形态为自定义图片
只看楼主
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
结帖率:100%
已结贴  问题点数:20 回复次数:6 
如何改变鼠标形态为自定义图片
Form click 之后
使鼠标变成Circle化成的圆
并且可以在程序运行时以适当代码改变它的大小,并随着鼠标在哪里Circle画的圆的圆心就到哪里
最后可以清除该圆范围内的图像
就像操作系统自带的画图板中的橡皮擦!
程序越精炼越好,最好别用什么vb API...的函数,本人没学过,看不懂啊。如果一定要的话,请给予详细说明。
非常感谢!……
搜索更多相关主题的帖子: 鼠标 定义 形态 
2009-09-02 16:19
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
在窗体上增加一个 Shape 控件,样式设为圆,名字为 Shape1
在窗体上增加一个文本框,一个按钮,用来输入自定义圆半径
本例中不隐藏鼠标箭头,如果需要隐藏,请自行使用相关API进行隐藏.
或显示为十字形都可以.

'-------------代码------------------------
Option Explicit

'保存鼠标位置及圆的半径
Dim MX As Long, MY As Long, R As Long

Private Sub Command1_Click()
'修改 半径
Dim i As Long
i = Val(Text1.Text)

If i > 15 Then
    Shape1.Width = i * 2
    Shape1.Height = i * 2
    R = i
End If

End Sub

Private Sub Form_Click()
    '单击
    '如果前面是显示圆,则进行擦除
    If Shape1.Visible Then
        Me.FillStyle = 0
        Me.FillColor = Me.BackColor
        Me.Circle (MX, MY), R, Me.BackColor
    End If
    '显示与不显示切换
        Shape1.Visible = Not Shape1.Visible
End Sub

Private Sub Form_Load()
   
'设置初始的图的大小
    R = 500
    Shape1.Width = 2 * R
    Shape1.Height = 2 * R
   
'画些线条,以便显示擦除的效果
    Dim x1 As Long, y1 As Long
    Dim i As Long
    For i = 1 To 1000
        Me.Line -(Rnd() * Me.Width, Rnd() * Me.Height), Rnd() * 16777215
    Next i
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    '移动鼠标下的圆
    MX = X
    MY = Y
    Shape1.Move X - R, Y - R
End Sub


授人于鱼,不如授人于渔
早已停用QQ了
2009-09-03 15:47
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:0 
风吹过b
你的思路很好,我收下了。
恩,我会给你加分的。
建议改进:要用Shape控件的画,还是正方形,长方形的好;我建议用你的思路加上不用控件、就用Method画图方法更好,你试试看。
加分之前,请你给我补补基础吧!
1.解释一下Rnd(a),a < 0 的情况;Me.Line -(Rnd() * Me.Width, Rnd() * Me.Height), Rnd() * 16777215同一句话中3个Rnd()的值相同吗?
2.Move方法中Button AS Integer,Shift AS Integer是什么意思啊?这两个变量有什么用?怎么用?
3.vb 画图默认的线的颜色?是黑色吗?
适当举几个小例子说明一下,可以吗?
非常感谢啊!!!

向前走着……
2009-09-03 19:01
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
1.解释一下Rnd(a),a < 0 的情况;Me.Line -(Rnd() * Me.Width, Rnd() * Me.Height), Rnd() * 16777215同一句话中3个Rnd()的值相同吗?
2.Move方法中Button AS Integer,Shift AS Integer是什么意思啊?这两个变量有什么用?怎么用?
3.vb 画图默认的线的颜色?是黑色吗?
适当举几个小例子说明一下,可以吗?
非常感谢啊!!!

RND() 产生 0-1 之间的随机数
Rnd() * 16777215 ,产生一个随机颜色
Me.Line -(Rnd() * Me.Width, Rnd() * Me.Height), Rnd() * 16777215
以上一点为起点,画一根线,坐标随机,颜色随机.
Move方法中Button AS Integer,Shift AS Integer是什么意思啊
button 是鼠标按键的参数,
1代表左键,2 代表右键 ,3代表 左+右键
shift 代表 CTRL ALT SHIFT 三个键的状态.
vb 画图默认的线的颜色?是黑色吗?
是窗体里指定的颜色,属性名不记得了.
   
要用Shape控件的画,还是正方形,长方形的好
我是用 shape 来显示那个随鼠标移动的圆 或 方框, 用来表示擦除范围.
具体清除是用的  这条命令
Me.Circle (MX, MY), R, Me.BackColor
这个命令是在窗体上画个圆.圆的线条是背景色.


授人于鱼,不如授人于渔
早已停用QQ了
2009-09-04 10:43
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:0 
谢谢
颜色的值,不是为16进制的数吗共9位,你的只有8位,我试过虽然6位也行,你能给我说一下吗?
vb画图默认颜色的属性名为ForeColor!
    具体清除是用的  这条命令
    Me.Circle (MX, MY), R, Me.BackColor
    这个命令是在窗体上画个圆.圆的线条是背景色.
这有个缺点,擦除时,是以正方形的形式,不是圆形,失真了。
不如: 'For s = 1 To R
      'Me.Circle (X, Y), s, BackColor
      ''Me.PSet (X, Y), BackColor
      'Next s
      '圆形橡皮擦 (1)
      'Me.Line (X - R / 2, Y - R / 2)-(X + R / 2, Y + R / 2), BackColor, BF
      '方形橡皮擦 (2)
只是(1)的方法,圆形画不实啊
再次谢谢你!

向前走着……
2009-09-04 11:20
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 

颜色是一个 long 值,但只用于了 3个字节. RGB(255,255,255) 为最大值,16777215

Me.Circle (MX, MY), R, Me.BackColor
    这个命令是在窗体上画个圆.圆的线条是背景色.
这有个缺点,擦除时,是以正方形的形式,不是圆形,失真了。

如果半径太小,就会看起来像是 正方形.这里的单位是以 缇 为单位,1像素=15缇(一般是这个比例)
Shape 控件,有 六 种形状

Me.Line (X - R / 2, Y - R / 2)-(X + R / 2, Y + R / 2), BackColor, BF
你这是画矩形,如果按我的程序里的的, R 是半径.代码就不对,范围小了.

授人于鱼,不如授人于渔
早已停用QQ了
2009-09-04 12:58
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:0 
Thank you very much!
明天报到后就开学了!……
再见了!……

向前走着……
2009-09-04 17:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-284556-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.831508 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved