달나라 노트

C# : DrawString (글씨 그리기) 본문

C#/C#

C# : DrawString (글씨 그리기)

CosmosProject 2022. 5. 18. 21:43
728x90
반응형

 

 

 

DrawString은 글씨를 그려줍니다.

 

Window에 글씨를 띄워주기 위해선 Label을 이용하는 방법도 있지만 DrawString method를 이용하는 방법도 있습니다.

 

두 방법의 차이점은 

Label은 마치 텍스트 박스에 글자를 담아서 나타내주는 것이라면

DrawString은 이미지처럼 글자를 그려주는 방식입니다.

 

 

Syntax

DrawString(Text, font, brush, x, y)

 

사용 방법은 위와 같습니다.

 

- Text

DrawString으로 적을 문자입니다.

 

 

- font

Font 객체를 전달합니다.

Font 객체는 다음과 같이 사용할 수 있습니다.

Font(글씨체, 글씨크기)

 

 

- brush

Brush 객체를 전달합니다.

Brush 객체는 그려질 글씨의 색상정보를 담게됩니다.

 

 

- x, y

글자의 x, y 좌표입니다.

주의할 것은 글자 중앙을 기준으로 하는게 아니라 글자를 담는 사각형의 왼쪽 상당 꼭지점 좌표를 기준으로 합니다.

 

 

 

 

 

 

 

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

class CardCatch
{
    public static void Main()
    {
        Form fm = new Form();
        fm.ClientSize = new Size(300, 300);

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

            g.DrawString("Apple", new Font("Arial", 20), new SolidBrush(Color.Gray), 0, 0);
        }
        fm.Paint += new PaintEventHandler(fm_paint);

        Application.Run(fm);
    }
}

 

- g.DrawString("Apple", new Font("Arial", 20), new SolidBrush(Color.Gray), 0, 0);

DrawString의 사용 예시입니다.

 

각 인자별 의미를 봅시다.

 

- "Apple"

표시될 텍스트입니다.

 

 

- new Font("Arial", 20)

텍스트의 font입니다.

Arial 글씨체이며 글씨 크기는 20이라는 의미입니다.

 

 

- new SolidBrush(Color.Gray)

Bruch 객체입니다.

인자로 Color.Gray가 전달되었으니 회색 Brush입니다. 따라서 글씨의 색상도 회색으로 나타내질 겁니다.

 

 

- 0, 0

글씨의 x, y 좌표입니다.

 

 

 

 

코드의 실행 결과입니다.

위에서 설명했던 대로 글씨 크기 20, Arial 글씨체인 회색 Apple이라는 글씨가 그려졌습니다.

 

 

 

 

 

 

 

 

 

 

 

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

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

        PictureBox pb = new PictureBox();
        pb.Parent = fm;
        pb.Width = 300;
        pb.Height = 300;
        pb.Location = new Point(0, 0);

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

            g.DrawString("Apple", new Font("Arial", 20), new SolidBrush(Color.Gray), 0, 0);
        }
        pb.Paint += new PaintEventHandler(fm_paint);


        Application.Run(fm);
    }
}

 

 

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

            g.DrawString("Apple", new Font("Arial", 20), new SolidBrush(Color.Gray), 0, 0);
        }
        pb.Paint += new PaintEventHandler(fm_paint);

 

위 예시처럼 Graphic event를 PictureBox에도 등록할 수 있습니다.

 

 

 

 

 

 

 

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

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

        PictureBox pb = new PictureBox();
        pb.Parent = fm;
        pb.Width = 300;
        pb.Height = 300;
        pb.Location = new Point(50, 100);

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

            g.DrawString("Apple", new Font("Arial", 20), new SolidBrush(Color.Gray), 0, 0);
        }
        pb.Paint += new PaintEventHandler(fm_paint);


        Application.Run(fm);
    }
}

 

 

주의할 점은 DrawString이 PictureBox에 속할 경우 그려지는 문자의 x, y 좌표는 Window 전체를 기준으로 한 x, y좌표가 아니라 PictureBox의 좌측 상단을 (0, 0)으로 간주한 좌표를 따르게 된다는 것입니다.

 

 

 

 

 

 

728x90
반응형
Comments