在我用picturebox的line画线的时候,我想在picture1的最右端画线,于是我获取picture的Picture1.Width,画线的时候Picture1.Line (w - 1, Y)-(w, y1), RGB(0, 255, 0)来画,我已经设置了picture的Picture1.AutoRedraw = False Picture1.ScaleMode = 3 但是画的线好像超过了picture的范围,如果把w改小就可以显示出来。是不是.width
获取的值不是像素值,还是什么原因啊。
获取的值不是像素值,还是什么原因啊。
建议设置Picture1.ScaleMode=vbPixels。
'Picture1.Line (Picture1.ScaleWidth - 500, 10)-(Picture1.ScaleWidth, 10), vbRed
MsgBox "Picture1.ScaleWidth:" & CStr(Picture1.ScaleWidth) & vbCrLf & "Picture1.Width:" & CStr(Picture1.Width) & vbCrLf & "Picture1.Width:" & CStr(Picture1.Width * Screen.TwipsPerPixelX)
End SubPrivate Sub Form_Load()
Me.ScaleMode = 3End Sub
Picture1.ScaleMode=vbPixels后,Picture1.ScaleWidth和Picture1.ScaleHeight就是以像素为单位的内部客户区的大小;但是Form1.ScaleMode=vbTwips(默认),所以Picture1.Width和Picture1.Height还是以缇为单位的(应为放在Form1的客户区上)。