VB.NET - Label의 크기에 맞춰서 글자 크기를 변경하기

2023. 4. 3. 16:32VB.NET/왕초보

Label은 사용자가 편집할 수 없는 텍스트 보여주기용 컨트롤로 주로 사용된다. 그래서, 작업 결과를 보여주거나 기타 다른 컨트롤들의 제목으로 사용되곤 한다.

 

그런데 이 Label 컨트롤을 사용하다 보면 뭔가 살짝 아쉬운 경우가 생기는데 레이블 크기에 비해 글자가 많거나 적을때가 바로 그렇다. 이 경우 대처방안도 두가지 경우로 나눌 수 있는데 글자의 넓이에 레이블의 크기를 맞추거나, 혹은 레이블의 크기에 글자의 크기를 맞추는 방법이다. Label 컨트롤은 이 둘을 모두 제공하니 하나씩 알아보기로 하자.

 

Label의 크기에 맞춰서 글자 크기를 변경하기

 

1. 글자의 넓이에 레이블의 크기를 맞추기

많은 분들이 알고 있듯이 이건 정말 간단하게 해결할 수 있다. Label 컨트롤의 속성중 AutoSize 속성을 True로 설정하면 된다. 정작 중요한건 다음 항목이다.

2. 레이블의 크기에 글자의 크기를 맞추기

이 기능이 이번 강좌의 핵심이다. 가끔은 레이블을 고정으로 두고 글자의 크기를 레이블에 맞춰야 하는 상황이 발생하기도 한다. 한정적인 공간에 많은 정보를 보여주는 경우들이 발생하기 때문이다. 우선 아래 이미지들을 확인해보자.

글자가 적을때 글자가 중간일때 글자가 많을때


레이블을 고정시켜놓은 상태에서 글자수가 적어지면 글자가 커지고, 글자수가 많아지면 글자가 작아져서 레이블 안에 모든 글자를 다 넣도록 설정한다. 물론 너무 많으면 볼품이 없으니 웬만큼은 적당한 개수의 글자가 들어간다는 전제가 필요하기는 하다. 이제 이 프로젝트를 만들어보자.

 

예제 프로젝트는 Microsoft Visual Studio 2022 Community, Windows Form 앱, .NET 프레임 워크 6.0 (장기지원)으로 생성했고, 폼에 아래 컨트롤을 추가하자.

 

컨트롤 이름 속성
Button ButtonInput Text = 입력
TextBox TextBoxInput MultiLine = True
Label LabelOutput AutoSize = False
TextAlign = MiddleCenter

   

기능은 간단하다. "입력" 버튼을 누르면 텍스트박스에 입력한 글자들을 모두 레이블에 뿌려주면 된다. 하지만, 이때 레이블의 크기에 맞게 글자 크기를 변경시켜주는게 핵심이다. 그 결과 위 그림들처럼 글자수가 적으면 큰글씨로 들어가고, 글자수가 많아지면 작은 글씨로 들어가게 되는 것이다.

 

"입력" 버튼 클릭시 실행되는 Click 이벤트에 아래 소스를 넣고 실행해보자.

Private Sub ButtonInput_Click(sender As Object, e As EventArgs) Handles ButtonInput.Click

    LabelOutput.Text = TextBoxInput.Text

    Dim fontSize As Integer = 20
    LabelOutput.Font = New Font("Arial", fontSize)

    Do While (LabelOutput.PreferredWidth < LabelOutput.Width Or LabelOutput.PreferredHeight < LabelOutput.Height)
        fontSize += 1
        LabelOutput.Font = New Font("Arial", fontSize)
    Loop

    Do While (LabelOutput.PreferredWidth > LabelOutput.Width Or LabelOutput.PreferredHeight > LabelOutput.Height)
        fontSize -= 1
        LabelOutput.Font = New Font("Arial", fontSize)
    Loop

End Sub



소스가 그리 어렵지는 않고, Label이 제공하는 속성 중에 PreferredWidth와 PreferredHeight만 제대로 이해하면 된다.

 

이들 속성은 레이블에 텍스트를 넣었을때 현재 글자 크기에서 레이블이 차지하는 크기를 나타내는 속성이다. 레이블의 Width와 Height는 고정이니, 글자의 크기를 1씩 증가 / 감소시키면서 레이블 안에 들어오도록 루프를 돌려서 조절하면 되는 것이다. 예전 VB6에는 없었던것 같은데 VB.NET에서 추가된 모양이다.

 

이제 글씨를 몇글자 입력하느냐에 따라서 글자의 크기가 변경되며 레이블을 벗어나지 않으면서 모든 내용을 보여주게 된다.

 

관련글 : 2023.02.22 - [VB.NET/왕초보] - [VB.NET] 기본 컨트롤 - Button

 

[VB.NET] 기본 컨트롤 - Button

Button 컨트롤은 Windows Form 앱을 작성할때 가장 많이 사용되는 컨트롤중 하나다. Windows Form 앱의 디자인모드에서 추가하는 모든 도구들을 사용하려면 가장 기본적으로 알아야 할 사항이 있다. 바로

chakhani.tistory.com

 

반응형