控件按比例随窗体缩放
来源:互联网 发布:高级java工程师充电班 编辑:程序博客网 时间:2024/04/30 03:03
Public Class Form1
Dim x As Single = 0
Dim y As Single = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'得到原始窗体大小
x = Me.Width
y = Me.Height
setTag(Me)
End Sub
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
'得到现在窗体的大小,然后根据原始大小计算缩放比例
Dim newx As Single = Me.Width / x
Dim newy As Single = Me.Height / y
setControls(newx, newy, Me)
End Sub
'递归取控件的原始大小和位置,用tag来纪录
Private Sub setTag(ByVal obj As Object)
For Each con As Control In obj.Controls
con.Tag = con.Width & ":" & con.Height & ":" & con.Left & ":" & con.Top & ":" & con.Font.Size
'如果是容器控件,则递归继续纪录
If con.Controls.Count > 0 Then
setTag(con)
End If
Next
End Sub
'递归重新设定控件的大小和位置
Private Sub setControls(ByVal newx As Single, ByVal newy As Single, ByVal obj As Object)
For Each con As Control In obj.Controls
con.AutoSize = False
Dim mytag() As String = con.Tag.ToString.Split(":")
con.Width = mytag(0) * newx
con.Height = mytag(1) * newy
con.Left = mytag(2) * newx
con.Top = mytag(3) * newy
'计算字体缩放比例,缩放字体
Dim currentSize As Single = newy * mytag(4)
con.Font = New Font(con.Font.Name, currentSize, _
con.Font.Style, con.Font.Unit)
'如果是容器控件,则递归继续缩放
If con.Controls.Count > 0 Then
setControls(newx, newy, con)
End If
Next
End Sub
End Class
Dim x As Single = 0
Dim y As Single = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'得到原始窗体大小
x = Me.Width
y = Me.Height
setTag(Me)
End Sub
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
'得到现在窗体的大小,然后根据原始大小计算缩放比例
Dim newx As Single = Me.Width / x
Dim newy As Single = Me.Height / y
setControls(newx, newy, Me)
End Sub
'递归取控件的原始大小和位置,用tag来纪录
Private Sub setTag(ByVal obj As Object)
For Each con As Control In obj.Controls
con.Tag = con.Width & ":" & con.Height & ":" & con.Left & ":" & con.Top & ":" & con.Font.Size
'如果是容器控件,则递归继续纪录
If con.Controls.Count > 0 Then
setTag(con)
End If
Next
End Sub
'递归重新设定控件的大小和位置
Private Sub setControls(ByVal newx As Single, ByVal newy As Single, ByVal obj As Object)
For Each con As Control In obj.Controls
con.AutoSize = False
Dim mytag() As String = con.Tag.ToString.Split(":")
con.Width = mytag(0) * newx
con.Height = mytag(1) * newy
con.Left = mytag(2) * newx
con.Top = mytag(3) * newy
'计算字体缩放比例,缩放字体
Dim currentSize As Single = newy * mytag(4)
con.Font = New Font(con.Font.Name, currentSize, _
con.Font.Style, con.Font.Unit)
'如果是容器控件,则递归继续缩放
If con.Controls.Count > 0 Then
setControls(newx, newy, con)
End If
Next
End Sub
End Class
- 控件按比例随窗体缩放
- 控件按比例随窗体缩放
- vb.net 控件(包括字体)随窗体按比例缩放
- VB 控件随窗体缩放
- QT获取控件中心点,图片按比例缩放
- 控件随窗体拖动而缩放
- C#Winform控件随窗体缩放
- C#Winform控件随窗体缩放
- .net 2005 vb 彻底解决控件随窗体变化而自动按比例调整的类
- 实现一个按比例缩放的Image服务器控件
- 实现图片在控件中的按比例缩放方法
- ImageView图片宽度为控件宽度,高度按比例缩放
- [转载]ImageView图片宽度为控件宽度,高度按比例缩放
- ImageView图片宽度为控件宽度,高度按比例缩放
- 图片宽度为控件宽度,高度按比例缩放
- Qt自适应屏幕大小和控件按比例缩放的几个问题
- 控件随窗体自动缩放大小(c#2005)
- 控件随窗体自动缩放大小(c#2005)
- Java和C++哪个更适用于我的项目?如果你不需要跨平台,不需要分布式,要强调程序的运行速度,C++更为适用。反之?你应当考虑Java。
- linux tar使用
- 驳斥孙永杰的某些言论-《Linux:多情却被无情恼》
- SAP BC480 课程中文自学笔记
- 裁剪后的进程列表
- 控件按比例随窗体缩放
- 转 Oracle9i中全文检索的创建与使用
- linux下vi编辑器命令大全
- SET NOCOUNT 的用法
- 在SQL和Access中使数据随机排序
- 修改SQLSERVER的所有者
- 一封令老板哭笑不得的辞职信
- Linux静态/动态链接库的创建和使用
- 第一次失恋感觉到的心痛