我正在使用TableLayoutPanel來包含控件,我想在窗體大小調整時自動調整大小。我想知道如何在窗體本身被調整大小時與窗體大小成比例地製作窗體的子控件「scale」?儘管TableLayoutPanel自動調整所包含控件的大小,但這些控件保持相同的字體大小。如何在表單大小更改時自動縮放子控件的字體大小?
回答
這是迄今爲止我提出的最好的方法。我使用了兩個比例因子,並遍歷所有控件以選擇我想要縮放的比例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestTableLayoutPanel
{
public partial class Form2 : Form
{
private const float LARGER_FONT_FACTOR = 1.5f;
private const float SMALLER_FONT_FACTOR = 0.8f;
private int _lastFormSize;
public Form2()
{
InitializeComponent();
this.Resize += new EventHandler(Form2_Resize);
_lastFormSize = GetFormArea(this.Size);
}
private int GetFormArea(Size size)
{
return size.Height * size.Width;
}
private void Form2_Resize(object sender, EventArgs e)
{
var bigger = GetFormArea(this.Size) > _lastFormSize;
float scaleFactor = bigger ? LARGER_FONT_FACTOR : SMALLER_FONT_FACTOR;
ResizeFont(this.Controls, scaleFactor);
_lastFormSize = GetFormArea(this.Size);
}
private void ResizeFont(Control.ControlCollection coll, float scaleFactor)
{
foreach (Control c in coll)
{
if (c.HasChildren)
{
ResizeFont(c.Controls, scaleFactor);
}
else
{
//if (c.GetType().ToString() == "System.Windows.Form.Label")
if (true)
{
// scale font
c.Font = new Font(c.Font.FontFamily.Name, c.Font.Size * scaleFactor);
}
}
}
}
}
}
Steven P幫助我通過他的建議在此提出我的問題的答案: http://stackoverflow.com/questions/9510577/resizing-a-label-and-font-of-the-form-基於窗口的大小 – gonzobrains
我編輯了你的帖子以修復代碼格式(它被分成兩部分)。 – Brian
謝謝!我不確定它是如何分裂的,但至少現在已經修復了。 – gonzobrains
- 1. 如何在表單大小更改時縮放dataGridView大小以形成表單?
- 2. TextView字體大小自動縮放
- 3. 自動更改字體大小作爲父控件更改大小
- 4. 如何在更改表格大小時自動調整控件大小?
- 5. 更改字體大小縮小級別
- 6. 自動更改主體字體大小
- 7. 在表單最大化時自動縮放子控件
- 8. 自動更改字體大小
- 9. 根據文本字體大小更改控件大小
- 10. 如何根據div大小縮放字體大小?
- 11. CSS字體大小縮放抖動
- 12. 在移動縮放時調整相對大小的元素的字體大小
- 13. WPF ViewBox縮放/大小更改事件
- 14. iPhone,如何在動作表按鈕中縮小字體大小?
- 15. 如何在*不*控制HTML時更改字體大小?
- 16. 如何縮小字體大小?
- 17. 如何使用MFC的DrawText在字體大小隻有一種字體大小時縮放字體
- 18. 如何更改DotNetNuke中Mega Menu的子菜單字體大小
- 19. 如何更改GridviewColumnHeader的字體大小?
- 20. 如何更改NSTableHeaderCell的字體大小
- 21. 如何更改JMeter的字體大小?
- 22. 如何更改JOptionPane的字體大小
- 23. 如何縮小activeadmin表單的大小?
- 24. 在Gtk 3.0中基於窗口小部件大小縮放字體大小
- 25. 如何在iOS中更改OHAttributedLabel的字體大小和字體大小?
- 26. 更改iphone/ipad保存縮放功能的字體大小
- 27. 更改字體大小而不更改框的大小
- 28. 更改Highcharts字體大小
- 29. getOrgChart字體大小更改
- 30. 更改字體大小
你有沒有看過一個程序,當窗口變小時,字體變小?這不是它完成的方式。 –
我發佈的答案對我的要求很好。 – gonzobrains