主题:请教:属性width和scalewidth的区别?
大懒猫
[专家分:220] 发布于 2008-11-10 10:09:00
Private Sub Form_Load()
Label1.FontSize = 20
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
If Label1.Left + Label1.Width > 0 Then
Label1.Move Label1.Left - 100
Else
Label1.Left = Picture1.ScaleWidth
End If
End Sub
请问属性width和scalewidth的有什么区别呀?[em18]
回复列表 (共6个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-11-10 10:32:00
能够使用这些属性来为绘图或打印创建一个自定义的坐标比例尺。例如,语句 ScaleHeight = 100 将改变窗体实际内部高度的度量单位。取代当前高度为 n 个单位(缇、像素、...),高度将变为 100 个自定义单位。因而,50 个单位的距离就是对象的高度/宽度的一半,101 个单位的距离将超出对象 1 个单位。
板凳
一江秋水 [专家分:9680] 发布于 2008-11-10 10:39:00
通俗地说,width是控件的实际宽度,ScaleWidth是窗体或图片框的用户自定义宽度,这个用户自定义宽度主要是便于用户使用自己的坐标系统。例如,窗体的width=200,你可以把ScaleWidth定义为100,以后就可用新坐标系来设置CurrentX 和 CurrentY。
3 楼
大懒猫 [专家分:220] 发布于 2008-11-10 10:48:00
[em21]还是不懂呀~~~~~那么具体到我这题的代码中的sclewidth又有什么作用呢?在线等。。。。。
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-11-10 10:58:00
假定你在图片框中使用坐标,横向最小是:-100,;最大是:500;纵向最小是:-20,最大是:300
你就可以:
Private Sub Form_Load()
Picture1.Scale (-100, 300)-(500, -20)
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1 = X & "," & Y
End Sub
这样得到的是你的数学坐标值,不再需要进行换算。在这里 ScaleHeight 就是300-(-20)=320, ScaleWidth=500-(-100)=600
5 楼
bcahzvip [专家分:6040] 发布于 2008-11-13 13:07:00
Option Explicit
Private Sub Form_Click()
Form_Resize
End Sub
Private Sub Form_Resize() '手动更改窗口大小看看.
Me.ScaleMode = IIf(Me.ScaleMode < 7, Me.ScaleMode + 1, 0)
Debug.Print "ScaleMode: ", Me.ScaleMode
Debug.Print , Me.Width, Me.Height
Debug.Print , Me.ScaleWidth, Me.ScaleHeight
Cls
Print "ScaleMode: ", Me.ScaleMode
Print , Me.Width, Me.Height
Print , Me.ScaleWidth, Me.ScaleHeight
End Sub
'你了解Scale表示什么吗? = =;
'可以上传个图片也都能画个图解了!~
6 楼
xuranchun [专家分:270] 发布于 2008-11-13 23:17:00
scalc是可见的,也就是你可以看到的范围加上scalc,一般都加上scalc的~
我来回复