728x90
๋ฐ์ํ
GDI+๋?
GDI+ (Graphics Device Interface Plus) Microsoft๊ฐ Windows์์ ๊ทธ๋ํฝ๊ณผ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ๊ณตํ๋ API์ ๋๋ค.
- GDI๋ ๊ธฐ์กด์ GDI(Graphics Device Interface)๋ฅผ ํ์ฅํ ๋ฒ์ ์ผ๋ก, ๊ทธ๋ํฝ, ํ ์คํธ, ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅด ์ํ ๋ ๋ง์ ๊ธฐ๋ฅ๊ณผ ํฅ์๋ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- .NET Framework์์ System.Drawing ๋ค์์คํ์ด์ค๋ฅผ ํตํด ์ฌ์ฉ๋ฉ๋๋ค.
1. GDI+์ ์ฃผ์ ๊ธฐ๋ฅ
GDI+๋ 2D ๊ทธ๋ํฝ ๋ ๋๋ง๊ณผ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃฐ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๊ทธ๋ํฝ
- ์ , ์ฌ๊ฐํ, ์๊ณผ ๊ฐ์ 2D ๋ํ์ ๊ทธ๋ฆด ์ ์์ต๋๋ค.
- ์์, ์ ๋๊ป, ์คํ์ผ ๋ฑ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
- ํ
์คํธ
- ํฐํธ ์คํ์ผ, ํฌ๊ธฐ, ์ปฌ๋ฌ๋ฅผ ์ง์ ํ์ฌ ํ ์คํธ๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
- ๊ฐ๋ณ ๊ธ์์ ์์น๋ฅผ ์ ์ดํ๊ฑฐ๋ ํ ์คํธ๋ฅผ ๊ธฐ์ธ์ด๋ ๋ฑ์ ๊ณ ๊ธ ํ ์คํธ ์กฐ์ ๊ฐ๋ฅ.
- ์ด๋ฏธ์ง
- ์ด๋ฏธ์ง ํ์ผ์ ๋ก๋ํ๊ณ ๋ณํ, ํ์ , ์๋ฅด๊ธฐ ๋ฑ์ ์กฐ์์ ์ํ.
- PNG, JPEG, BMP, GIF ๋ฑ ๋ค์ํ ์ด๋ฏธ์ง ํ์์ ์ง์.
- ํฌ๋ช
๋์ ์ํฐ์จ๋ฆฌ์ด์ฑ
- ํฌ๋ช ๋: ๋ฐํฌ๋ช ํจ๊ณผ๋ฅผ ํ ํด ๊ทธ๋ํฝ์ ๋ ์ด์ด๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํํ.
- ์ํฐ์จ๋ฆฌ์ด์ฑ: ๊ทธ๋ํฝ์ ๋ถ๋๋ฝ๊ฒ ๋ ๋๋งํ์ฌ ๊ฒฝ๊ณ์ ์ด ๊ฑฐ์น ๊ฒ ๋ณด์ด์ง ์๋๋ก ์ฒ๋ฆฌ.
- ๊ณ ๊ธ ๊ทธ๋ํฝ ์์
- ๊ฒฝ๋ก(Path)๋ฅผ ์ฌ์ฉํ ๋ณต์กํ ๋ํ ์์ฑ.
- ๋ณํ(ํ์ , ํฌ๊ธฐ ์กฐ์ , ์ด๋)๊ณผ ๊ฐ์ 2D ๊ทธ๋ํฝ ๋ณํ.
- ๋นํธ๋งต ๋ฐ์ดํฐ ์ง์ ์กฐ์
2. GDI+ ๊ตฌ์ฑ ์์
(1). Graphics ํด๋์ค
- GDI+์ ํต์ฌ ํด๋์ค ํ๋ฉด, ์ด๋ฏธ์ง, ํ๋ฆฐํฐ์ ๊ฐ์ ๊ทธ๋ํฝ ์ถ๋ ฅ ์ฅ์น์ ์ํธ ์์ฉ.
- System.Drawing.Graphics๋ฅผ ํตํด ์ ๊ณต๋๋ฉฐ, ์ฃผ๋ก Paint ์ด๋ฒคํธ๋ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉ.
์์ : ๊ฐ๋จํ ์ ๊ทธ๋ฆฌ๊ธฐ
using System;
using System.Drawing;
using System.Windows.Forms;
public class MainForm : Form
{
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
// ๋นจ๊ฐ์ ์ ๊ทธ๋ฆฌ๊ธฐ
Pen pen = new Pen(Color.Red, 2);
g.DrawLine(pen, 10, 10, 100, 100);
pen.Dispose();
base.OnPaint(e);
}
}
public static class Program
{
public static void Main()
{
Application.Run(new MainForm());
}
}
(2). Pen ํด๋์ค
- ์ ์ ์์, ๋๊ป, ์คํ์ผ ๋ฑ์ ์ ์.
- Pen ๊ฐ์ฒด๋ ์ง์ , ๊ณก์ , ๊ฒฝ๊ณ์ ๋ฑ์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉ.
์์ : Pen ์คํ์ผ ์ค์
Pen dashedPen = new Pen(Color.Blue, 2);
dashedPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
(3). Brush ํด๋์ค
- ๋ํ ๋ด๋ถ๋ฅผ ์ฑ์ฐ๋ ๋ฐ ์ฌ์ฉ.
- ๋จ์ ๋ธ๋ฌ์, ๊ทธ๋ผ๋ฐ์ด์ ๋ธ๋ฌ์ ๋ฑ ๋ค์ํ ์ข ๋ฅ ์ ๊ณต.
์์ : ์ฌ๊ฐํ ๋ด๋ถ ์ฑ์ฐ๊ธฐ
Brush solidBrush = new SolidBrush(Color.Green);
g.FillRectangle(solidBrush, 20, 20, 80, 80);
(4). Bitmap ํด๋์ค
- ์ด๋ฏธ์ง ์์ ์ ์ํ ํด๋์ค.
- ์ด๋ฏธ์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ , ๋ณํํ๊ฑฐ๋ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ.
์์ : ์ด๋ฏธ์ง ๋ก๋ ๋ฐ ํ์
Bitmap bitmap = new Bitmap("image.jpg");
bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
bitmap.Save("rotated_image.jpg");
(5). Path ๋ฐ Region
- GraphicsPath: ๊ณก์ , ๋ํ, ํ ์คํธ ๋ฑ์ ๊ฒฝ๋ก ํํ๋ก ์ ์.
- Region: ๋ํ ์์ญ์ ์ ์ํ๊ณ ๋ณต์กํ ํด๋ฆฌํ ์์ ์ํ.
3. GDI+ ์ฌ์ฉ์ ์ฅ์
- ์ฌ์ด ์ฌ์ฉ:
- .NET ํ๊ฒฝ์์ System.Drawing ๋ค์์คํ์ด์ค๋ฅผ ํตํด ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅ.
- ๋ค์ํ ๊ธฐ๋ฅ:
- 2D ๊ทธ๋ํฝ, ์ด๋ฏธ์ง, ํ ์คํธ ๋ ๋๋ง ๋ฑ ๋ค์ํ ์์ ์ง์.
- ์ด์์ฒด์ ํตํฉ:
- Windows ์ด์์ฒด์ ์ ํตํฉ๋์ด ์์ด ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณต.
4. GDI+ ์ฌ์ฉ ์ ์ฃผ์ํ ์
- ์ฑ๋ฅ ์ ํ:
- GDI+๋ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ (์: ๊ฒ์)์๋ ์ ํฉํ์ง ์์.
- ์ค์๊ฐ 3D ๊ทธ๋ํฝ ์์ ์ OpenGL, DirectX ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํด์ผ ํจ.
- ์์ ๊ด๋ฆฌ:
- GDI+ ๊ฐ์ฒด(Graphics, Bitmap, Pen, Brush)๋ ๋น๊ด๋ฆฌ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉ.
- ์์ ์ด ๋๋ ํ ๋ฐ๋์ Dispose ํธ์ถํ์ฌ ์์ ํด์ .
- ๋ฉํฐ์ค๋ ๋ฉ:
- GDI+๋ ์ค๋ ๋ ์ธ์ดํํ์ง ์์. UI ์์ ์ ๋ฐ๋์ UI ์ค๋ ๋์์ ์คํํด์ผ ํจ.
5. GDI+์ WPF ๋น๊ต
ํน์ง | GDI+ | WPF |
์ถ์ ์๊ธฐ | .NET Framework ์ด๊ธฐ (2002) | .NET Framework 3.0 (2006) |
์ฑ๋ฅ | CPU ๊ธฐ๋ฐ | GPU ๊ฐ์ ์ง์ |
์ง์ ๊ธฐ๋ฅ | ๊ธฐ๋ณธ 2D ๊ทธ๋ํฝ | 2D/3D ๊ทธ๋ํฝ, ์ ๋๋ฉ์ด์ |
์ฌ์ฉ ๋์ด๋ | ๋น๊ต์ ์ฌ์ | ๋ ๋์ ํ์ต ๊ณก์ |
์ ํฉ์ฑ | ๊ฐ๋จํ ๊ทธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ | ๊ณ ๊ธ UI์ ๋ณต์กํ ๊ทธ๋ํฝ |
728x90
๋ฐ์ํ
'๐ Development > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C# .net] Windows ์๊ฒฉ ์ฆ๋ช ๊ด๋ฆฌ์ ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ (0) | 2024.12.11 |
---|---|
[C#] ๋ค์์คํ์ด์ค(namespace) ๋? (3) | 2024.11.20 |
C#๊ณผ .NET์ผ๋ก ์น์บ ์ดฌ์ ๋ฐ ์ ์ฅ ์์ (3) | 2024.11.12 |
C#๊ณผ .NET ๊ด๊ณ, ์ฝ๊ฒ ์ดํดํ๊ธฐ (2) | 2024.11.11 |