vb.net 控件(包括字体)随窗体按比例缩放

Public Class frmDl

Dim x As Single = 0

Dim y As Single = 0

Private Sub frmDl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

x = Me.Width

y = Me.Height

setTag(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 = (mytag(1) * newy * mytag(4)) / mytag(1)

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

Private Sub frmDl_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

End Class

vb.net 控件(包括字体)随窗体按比例缩放,布布扣,bubuko.com

时间: 2024-12-16 15:45:17

vb.net 控件(包括字体)随窗体按比例缩放的相关文章

[原]C#按比例缩放窗体控件及字体

按照比例缩放窗体控件及字体,如需等比例缩放,只需将x,y的比例设置成相同即可. 为了减小误差,建议使用原始尺寸来计算比例. 1 private float X, Y; 2 3 private bool b = false; 4 5 public MainForm() 6 { 7 InitializeComponent(); 8 9 X = this.Width; 10 Y = this.Height; 11 12 SetTag(this); 13 14 b = true; 15 } 16 17

VB基础--控件

VB有两类控件:标准控件.ActiveX控件 标准控件:工具箱自带的控件 图形控件:图像框.图片框 图像框不能作为父控件,而且不能通过Print方法接受文本 在设计和执行阶段都可以载入图片,设计时的图片已加到可执行文件中,运行时LoadPicture需要从外部读取. 对于窗体来说,只有当此窗体上任何控件都不接受焦点时,此窗体才能接受焦点 只有在窗体和控件可见的时候才能设置焦点(Show之后) VB基础--控件

VB ListView控件各种操作详解

VB ListView控件各种操作详解 [vb] view plaincopy Private Sub Form_Load() 'ListView1.SmallIcons = ImageList1.Object '把ImageList1图标列表控件绑定到 ListView1列表控件中来. ListView1.ListItems.Clear               '清空列表 ListView1.ColumnHeaders.Clear           '清空列表头 ListView1.Vi

如何修改全部DevExpress控件的字体

引用:https://www.devexpress.com/Support/Center/Question/Details/A2761 You can change the default font used by DevExpress WindowsForms controls with the following static properties: DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont - Specifies the

根据ui控件的字体计算占用的长度

//1.根据icon计算name的长度 CGFloat nameX = CGRectGetMaxX(_icon.frame) + kBorder; CGFloat nameY = iconY; //计算用户昵称的长度 CGSize nameSize = [_weiBo.name sizeWithFont:_name.font]; _name.frame = CGRectMake(nameX, nameY, nameSize.width, nameSize.height); //2.设置vip的f

WPF加载Winform窗体时 报错:子控件不能为顶级窗体

一.wpf项目中引用WindowsFormsIntegration和System.Windows.Forms 二.Form1.Designer.cs 的 partial class Form1 设置为:public partial class Form1 三.代码如下: XXXX.Form1 Zhuwindow = new XXXX.Form1(); Zhuwindow.TopLevel = false; Zhuwindow.FormBorderStyle = System.Windows.Fo

【MFC系列】MFC快速设置控件文本字体、大小、颜色、背景

以静态文本为例,分享一下怎么修改文本字体.大小.颜色.背景等参数.其他文本.控件等可参照修改. 1.修改字体.大小 这个很简单,首先在Dlg类中声明一个CFont类型的成员变量: 然后在类的初始化函数OnInitDialog()中添加以下两行代码: 1 //设置静态文本字体大小 2 m_editFont.CreatePointFont(180, _T("宋体")); 3 m_Static.SetFont(&m_editFont); 2.改变编辑框文本颜色.背景颜色 右键点击该对

Winform 获取当前单击的控件名称 和 向窗体添加控件

Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_Click(object sender, EventArgs e) { Button button = (Button)sender; MessageBox.Show(button.Name); } 然后将要实现的按钮绑定该button_Click事件OK. 向窗体添加控件,比如添加一个Button按

控件 UI: 字体的自动继承的特性, Style, ControlTemplate

字体的自动继承的特性 Style 样式 ControlTemplate 控件模板 示例1.演示字体的自动继承的特性Controls/UI/FontInherit.xaml <Page x:Class="Windows10.Controls.UI.FontInherit" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.m