달나라 노트

C# : MeasureString (DrawString에서 문자의 크기 얻기) 본문

C#/C#

C# : MeasureString (DrawString에서 문자의 크기 얻기)

CosmosProject 2022. 5. 23. 00:07
728x90
반응형

 

 

 

MeasureString은 어떤 문자를 어떤 글씨체, 어떤 슬씨 크기로 적었을 때 그 글씨의 가로/세로 길이 정보를 측정해줍니다.

 

MeasureString은 Paint event 내에서 Graphics 객체로부터 사용할 수 있는 method입니다.

 

 

Syntax

MeasureString(text, font)

 

- text

크기를 측정할 대상 문자입니다.

 

 

- font

text에 적용할 Font 객체입니다. Font 객체는 아래와 같이 만들 수 있습니다.

new Font(글씨체, 글씨크기)

 

 

 

 

using System;
using System.Windows.Forms;
using System.Drawing;

class CardCatch
{
    public static void Main()
    {
        // Constatns //
        Form fm = new Form();
        fm.Width = 500;
        fm.Height = 500;

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            string str = "Apple";
            Font font = new Font("Airal", 15);
            SizeF str_size = g.MeasureString(str, font);

            g.DrawString($"Apple {str_size.Width}, {str_size.Height}", new Font("Arial", 20), new SolidBrush(Color.Gray), 10, 20);
        }
        fm.Paint += new PaintEventHandler(fm_paint);



        // Main //
        Application.Run(fm);
    }
}

 

 

위 코드는 Apple이라는 글자를 Arial, 글씨크기 15로 적었을 때 가로/세로 길이가 얼마가 될지를 Window에 표시해주는 코드입니다.

 

 

 

 

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            string str = "Apple";
            Font font = new Font("Airal", 15);
            SizeF str_size = g.MeasureString(str, font);

            g.DrawString($"Apple {str_size.Width}, {str_size.Height}", new Font("Arial", 20), new SolidBrush(Color.Gray), 10, 20);
        }
        fm.Paint += new PaintEventHandler(fm_paint);

 

위 부분을 봅시다.

 

MeasureString의 첫 번째 인자로 str를 받았습니다. 이것은 Apple이라는 텍스트를 담고있는 string입니다.

 

MeasureString의 두 번째 인자로는 font를 받았습니다. font 객체는 new Font(~~)로 생성되었습니다.

 

MeasureString은 SizeF 라는 타입의 객체를 return합니다.

이 객체는 Width, Height property를 가지고 있으며 Width는 문자의 가로 길이, Height은 문자의 세로 길이를 의미합니다.

 

 

 

 

 

 

728x90
반응형
Comments