IT/C#

[C#] WinForms Button 혹은 다른 Control에 세로 텍스트 적용하기.

Ella.J 2025. 8. 25. 12:21
728x90
반응형

C# WinForms Button에 세로 텍스트 적용하기

윈도우 폼 애플리케이션을 개발하다 보면 기본 Button 컨트롤에 가로 텍스트만 표시되는 것이 아쉬울 때가 있습니다.

특히 메뉴 버튼이나 툴바 형태의 UI를 만들 때는 세로로 텍스트를 출력하고 싶을 때가 많습니다.

이번 포스팅에서는 C# WinForms에서 Button 컨트롤에 세로 텍스트를 적용하는 방법을 알아보겠습니다.


1. 기본 Button 텍스트는 가로만 표시된다

기본적으로 WinForms의 Button 컨트롤은 Text 속성으로 문자열을 출력하며, 가로 방향만 지원합니다.

따라서 별도의 기능이 없으면 세로 텍스트를 표시할 수 없습니다.

이 문제를 해결하기 위해서는 OnPaint 이벤트를 오버라이드하거나 ControlPaint.DrawString과 같은 GDI+ 기능을 활용해야 합니다.


2. StringFormat을 이용하여 Paint Event 적용하기

먼저, 기존 Button을 하나 그리고 세로 텍스트를 새로 그리는 Paint 이벤트를 적용합니다.

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public Form1()
{
    InitializeComponent();
 
    button1.Text = "";
    button1.Paint += button_Paint;
}
 
private void button_Paint(object sender, PaintEventArgs e)
{
    // 1. StringFormat 객체 생성 및 설정
    StringFormat stringFormat = new StringFormat();
    stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
 
    // 2. 텍스트 그리기
    e.Graphics.DrawString(
        "Button #1",              // 표시할 텍스트
        new Font("Consolas"9),      // 폰트
        new SolidBrush(Color.Black),  // 색상
        new PointF(11),             // 시작 위치 (x, y)
        stringFormat                  // 세로 쓰기 설정
    );
}
cs

 

stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;

위 코드를 사용하면, 버튼에 출력되는 텍스트가 세로로 표시됩니다.

기존에 있던 Text를 지워줘야 새로 그리는 세로 텍스트와 겹쳐지지 않습니다.


3. 결과 화면 예시


마무리

기본 WinForms Button은 가로 텍스트만 제공하지만, OnPaint를 오버라이드하여 StringFormat 객체를 이용하면 손쉽게 세로 텍스트 버튼을 만들 수 있습니다.

이 방법을 활용하면 더 직관적이고 시각적으로 다양한 UI를 구현할 수 있으니, 프로젝트에 맞게 응용해 보시기 바랍니다! 🚀

 

728x90
반응형