急求助:关于vb.net自定义光标的问题

hjm168 2010-11-09 01:11:20
固定大小的矩形可以以文件的方式直接用Cursor载入当光标使用,那么请问vb.net怎样实现以“任意大小的矩形”作为光标呢?用Cursor.Draw和Cursor.DrawStretched试了很多次都画不出光标,如果能用Cursor.Draw和Cursor.DrawStretched画出实际的光标就能解决了。
希望知道的朋友能帮帮我,因为我的积分用完了,没有分给你,我只能真心实意的谢谢你。
...全文
346 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjm168 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyazhe 的回复:]
没明白你想实现什么。
吧图片做鼠标指针?还是想用指定图形填充矩形?

VB.NET code
Dim bmp As New Bitmap(TreeView1.Width, TreeView1.Height)
PictureBox1.DrawToBitmap(bmp, New Rectangle(0, 0, TreeView1.Width, TreeView1.Height))
Curs……
[/Quote]

谢谢你了。

我的目的是要做一个任意大小的透明矩形作鼠标指针。(这个矩形是红色边框,只有边框,其它部分是透明的).

即用一个矩形边框做鼠标指针(只有四条红边(矩形)的指针,其它部位是透明的,比如说边框是红色),要求把鼠标指针移到一个有背景图片上,光标也只能显示这四条边,透过矩形内部可以看到背景图片,除了这四条边以外,不能把背景图片遮住。
hjm168 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyazhe 的回复:]
没明白你想实现什么。
吧图片做鼠标指针?还是想用指定图形填充矩形?

VB.NET code
Dim bmp As New Bitmap(TreeView1.Width, TreeView1.Height)
PictureBox1.DrawToBitmap(bmp, New Rectangle(0, 0, TreeView1.Width, TreeView1.Height))
Curs……
[/Quote]

我的目的是要用一个矩形边框做鼠标指针(只有四条红边(矩形)的指针,其它部位是透明的,比如说边框是红色)
hjm168 2010-11-09
  • 打赏
  • 举报
回复
问题还没解决。
vb.net谁会做自定义任意大小矩形或圆形的光标,有高手会吗?
兔子-顾问 2010-11-09
  • 打赏
  • 举报
回复
没明白你想实现什么。
吧图片做鼠标指针?还是想用指定图形填充矩形?
Dim bmp As New Bitmap(TreeView1.Width, TreeView1.Height)
PictureBox1.DrawToBitmap(bmp, New Rectangle(0, 0, TreeView1.Width, TreeView1.Height))
Cursor = New Cursor(bmp.GetHicon())

这个可以吧picturebox中的内容作鼠标光标。
hjm168 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
不太明白你想做什么。这样?

VB.NET code

Using g As Graphics = Me.CreateGraphics()
Cursor.DrawStretched(g, ClientRectangle)
End Using


ClientRectangle表示当前窗体的内部矩形。你可以自己定义成你的尺寸的也可以。
[/Quote]

目的:在图片上有大小不等的“矩形物体”,要在图片上的每一个“矩形物体”上画出它的外框”。我是想先找一个“物体”画出它的矩形外框后,同样大小的“矩形物体”就可以以它做样本,当光标使用(这样可以参照确定正好是其它“矩形物体”的外框,然后在其它“矩形物体”上直接点一下左键,就可以画出一样大小的矩形框)。

我测试了很多次画不出任意变化的矩形光标:(用vb6.0就很简单,因为它有shape控件,但到了vb.net没有shape了。)

代码如下:

'第一种测试
Dim R As Rectangle
R.X = 50
R.Y = 50
R.Width = 200
R.Height = 100

Dim g As Graphics = PictureBox1.CreateGraphics()
g.DrawRectangle(Pens.Red, R.X, R.Y, R.Width, R.Height)
Cursor.Draw(g, R)
Me.Cursor = Cursor

'第二种测试

Dim rectangle As New Rectangle(New Point(10, 10), _
New Size(Cursor.Size.Width * 2, Cursor.Size.Height * 2))
Cursor.DrawStretched(g, rectangle)
Me.Cursor = Cursor

直接在Form_Load里面测试的,但都画不出相应的光标,肯请大有帮帮我,谢谢!

wsk200209 2010-11-09
  • 打赏
  • 举报
回复
说的具体点啊!
兔子-顾问 2010-11-09
  • 打赏
  • 举报
回复
不太明白你想做什么。这样?

Using g As Graphics = Me.CreateGraphics()
Cursor.DrawStretched(g, ClientRectangle)
End Using

ClientRectangle表示当前窗体的内部矩形。你可以自己定义成你的尺寸的也可以。
hjm168 2010-11-09
  • 打赏
  • 举报
回复
不好意思,我看错了,我还有积分,是下载的积分没了,社区的积分还有,一定给。谢谢!

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧