回 帖 发 新 帖 刷新版面

主题:请教:属性width和scalewidth的区别?

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个回复)

沙发

能够使用这些属性来为绘图或打印创建一个自定义的坐标比例尺。例如,语句 ScaleHeight = 100 将改变窗体实际内部高度的度量单位。取代当前高度为 n 个单位(缇、像素、...),高度将变为 100 个自定义单位。因而,50 个单位的距离就是对象的高度/宽度的一半,101 个单位的距离将超出对象 1 个单位。

板凳

通俗地说,width是控件的实际宽度,ScaleWidth是窗体或图片框的用户自定义宽度,这个用户自定义宽度主要是便于用户使用自己的坐标系统。例如,窗体的width=200,你可以把ScaleWidth定义为100,以后就可用新坐标系来设置CurrentX 和 CurrentY。

3 楼

[em21]还是不懂呀~~~~~那么具体到我这题的代码中的sclewidth又有什么作用呢?在线等。。。。。

4 楼

假定你在图片框中使用坐标,横向最小是:-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 楼

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 楼

scalc是可见的,也就是你可以看到的范围加上scalc,一般都加上scalc的~

我来回复

您尚未登录,请登录后再回复。点此登录或注册