作者ClubT (Debug能不能用杀虫济啊)
看板Visual_Basic
标题Re: [VB6 ] 介面等比例缩放
时间Mon May 18 11:44:37 2009
By
VB心得笔记
Form改变大小时同时改变其内Control之大小
这个程式只是个范例,
但在某些物件上不能使用,例如:Line,因为它没有Top, Left
Width, Height所以在本程式中没有作用,不过呢,像这一类的东西可自己用另外程式
去控制。
来源:fumi, cww更改
Option Explicit
Private InitWidth As Long ' Form 的原始大小
Private InitHeight As Long
Private Sub Form_Load()
InitWidth = ScaleWidth
InitHeight = ScaleHeight
Dim Ctl As Control
' 记录每个 Control 的原始位置、大小、字型大小, 放在 Tag 属性中
On Error Resume Next '确保left, top, width, height, Tag属性没有全有的Control
For Each Ctl In Me '也能正常执行
Ctl.Tag = Ctl.Left & " " & Ctl.Top & " " & Ctl.Width & " " & _
Ctl.Height & " "
Ctl.Tag = Ctl.Tag & Ctl.FontSize & " "
Next Ctl
On Error GoTo 0
End Sub
Private Sub Form_Resize()
Dim D(4) As Double
Dim I As Long
Dim TempPos As Long
Dim StartPos As Long
Dim Ctl As Control
Dim TempVisible As Boolean
Dim ScaleX As Double
Dim ScaleY As Double
ScaleX = ScaleWidth / InitWidth
ScaleY = ScaleHeight / InitHeight
On Error Resume Next
For Each Ctl In Me
TempVisible = Ctl.Visible
Ctl.Visible = False
StartPos = 1
' 读取 Control 的原始位置、大小、字型大小
For I = 0 To 4
TempPos = InStr(StartPos, Ctl.Tag, " ", vbTextCompare)
If TempPos > 0 Then
D(I) = Mid(Ctl.Tag, StartPos, TempPos - StartPos)
StartPos = TempPos + 1
Else
D(I) = 0
End If
' 根据比例设定 Control 的位置、大小、字型大小
Ctl.Move D(0) * ScaleX, D(1) * ScaleY, D(2) * ScaleX, D(3) * ScaleY
'Ctl.Width = D(2) * ScaleX
'Ctl.Height = D(3) * ScaleY
If ScaleX < ScaleY Then
Ctl.FontSize = D(4) * ScaleX
Else
Ctl.FontSize = D(4) * ScaleY
End If
Next I
Ctl.Visible = TempVisible
Next Ctl
On Error GoTo 0
End Sub
※ 引述《dontkissme (不要亲我)》之铭言:
: 请问VB6该如何让我视窗缩放的时候
: 也可以让里头的物件可以等比例缩放?
: 因为我想写全萤幕的介面
: 可是我萤幕比较大..
: 有时候写好拿去EEEPC玩都会爆炸超出萤幕@@
: 可以改哪个地方,还是有什麽关键字?
: 请高手帮帮我,谢谢
--
《我的Blog》
http://clubtblog.blogspot.com/
你的资料如下 (这是控制码,每个人都会看到自己的资料)
《ID昵称》 ()
《上站次数》次
《文章篇数》篇
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.11.34