注册 登录
编程论坛 VB6论坛

PictureBox 坐标精度的问题

lh69417 发布于 2014-04-01 09:26, 434 次点击
'注意:这里设置Picture1、Picture2的ScaleWidth和ScaleHeight都是相同的
'但取坐标值时,Picture2不能得到保留四位小数的精确值而Picture1可以,可能与鼠标点击处坐标X和Y为单精度浮点型变量有关
'在不改变Picture2.Scale的设置条件下,Picture2如何取到保留四位小数的精确值?

Private Sub Form_Load()
Picture1.Scale (0, 1000)-(1000, 0)
Picture2.Scale (3278426.2345, 657915.4422)-(3279426.2345, 656915.4422)
'这里设置Picture1、Picture2的ScaleWidth和ScaleHeight都是相同的
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Label1.Caption = "X:" & Format(x, "0.0000") & ", Y:" & Format(y, "0.0000")
End Sub

Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Label2.Caption = "X:" & Format(x, "0.0000") & ", Y:" & Format(y, "0.0000")
End Sub
3 回复
#2
茅十八2014-04-03 21:56
扩大picture2的边框大小,提高鼠标单击处的位置精度
#3
lh694172014-04-10 14:57
回复 2楼 茅十八
你的方法不可行,鼠标事件获得的坐标x、y是单精度浮点型的,只有4个字节,整数位数较长后,小数位数就减少了。
如果你有办法,将鼠标事件获得的坐标允许是双精度型(8个字节),这事就ok了。
#4
风吹过b2014-04-10 17:00
首先,屏幕的 精度是: 72像素每英寸。   一般情况下WIN平台都是这样的。
所以,你再多的小数,每像素的值是固定的。而鼠标点击的位置,最多也只能做到 像素 点为止。
系统产生的小数,也就是用 鼠标的坐标(像素)折算成内部坐标(单精度浮点)再多的小数位没有任何意义。
在这种情况下,你要提高精度:只能放大图像后,然后 自己计算这个换算关系 。
1