728x90
반응형
Form 내의 Control들을 다 불러와서 기존 FHD 사이즈에 맞게 생성된 UI를
UHD(4K) 사이즈로 변경해 준다. (1920*1080 -> 3840*2160 ; 2배)
고정 UI로 만들었던 프로그램의 컨트롤 개수가 많고 일일이 변경하기 어려운 경우 유용하게 쓰일 수 있다.
컨트롤 사이즈와 위치를 변경해주고, 폰트나 이미지가 사용된 컨트롤은 폰트와 이미지 사이즈도 변경해 준다.
아래 Change4KUI 함수의 [ if (control.GetType() == typeof(Button)) ] 같이
추가로 사이즈 조정이 필요한 컨트롤은 해당 컨트롤 타입으로 확인하여 추가로 필요한 코드를 작성해 준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
Control[] formControl;
public Form1()
{
InitializeComponent();
//Form Control List 만들기
formControl = new Control[] { this };
//4K UI로 변경하기
foreach (Control frmControl in formControl)
{
Change4KUI(frmControl);
}
}
//폼 내의 모든 컨트롤 불러오기
public static Control[] GetAllControlsUsingRecursive(Control containerControl)
{
List<Control> allControls = new List<Control>();
foreach (Control control in containerControl.Controls)
{
allControls.Add(control);
if (control.Controls.Count > 0)
{
allControls.AddRange(GetAllControlsUsingRecursive(control));
}
}
return allControls.ToArray();
}
//폼 4K UI 사이즈로 변경
void Change4KUI(Control frmControl) //1920 * 1080 => 3840 * 2160
{
//Form 화면 크기 조정
frmControl.Width *= 2;
frmControl.Height *= 2;
Control[] controls = GetAllControlsUsingRecursive(frmControl);
foreach (Control control in controls)
{
//컨트롤 사이즈 및 위치 변경
control.Width *= 2;
control.Height *= 2;
control.Left *= 2;
control.Top *= 2;
//버튼, 라벨 아이콘 이미지 사이즈 조정
if (control.GetType() == typeof(Button))
{
Button btnControl = (Button)control;
if (btnControl.Image != null) btnControl.Image = (Image)(new Bitmap(btnControl.Image, new Size(btnControl.Image.Width * 2, btnControl.Image.Height * 2)));
}
else if (control.GetType() == typeof(Label))
{
Label lblControl = (Label)control;
if (lblControl.Image != null) lblControl.Image = (Image)(new Bitmap(lblControl.Image, new Size(lblControl.Image.Width * 2, lblControl.Image.Height * 2)));
}
//PictureBox BackgroundImage 사이즈 조정
else if (control.GetType() == typeof(PictureBox))
{
PictureBox pbControl = (PictureBox)control;
if (pbControl.BackgroundImage != null) pbControl.BackgroundImage = (Image)(new Bitmap(pbControl.BackgroundImage, new Size(pbControl.BackgroundImage.Width * 2, pbControl.BackgroundImage.Height * 2)));
}
//폰트 사이즈 조정
if (control.Font != null)
{
control.Font = new Font(control.Font.FontFamily, (int)(control.Font.Size * 1.5), control.Font.Style);
}
}
}
|
cs |
728x90
반응형
'IT > C#' 카테고리의 다른 글
[C#] Drag and Drop으로 Winform에 파일 넣기 (0) | 2023.01.13 |
---|---|
[C#] Double Trackbar User Control 만들기 (2) | 2023.01.12 |
[C#] Tesseract OCR - 이미지에서 글자 추출하기 (WinForm) (2) | 2022.12.27 |
[C#] Excel Data Ctrl+C Ctrl+V to DataGridView (0) | 2022.11.17 |
[C#] ZedGraph Labeling (0) | 2022.11.17 |