728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
this.pictureBox.Resize += pictureBox_Resize;
this.pictureBox.Paint += pictureBox_Paint;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 픽처 박스 크기 변경시 처리하기 - pictureBox_Resize(sender, e)
/// <summary>
/// 픽처 박스 크기 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void pictureBox_Resize(object sender, EventArgs e)
{
this.pictureBox.Refresh();
}
#endregion
#region 픽처 박스 페인트시 처리하기 - pictureBox_Paint(sender, e)
/// <summary>
/// 픽처 박스 페인트시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void pictureBox_Paint(object sender, PaintEventArgs e)
{
using(Font font = new Font("Times New Roman", 40, FontStyle.Bold))
{
DrawSplitText
(
e.Graphics,
"C# Helper",
font,
this.pictureBox.ClientRectangle,
Brushes.Black,
Brushes.White
);
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 분리된 텍스트 그리기 - DrawSplitText(graphics, text, font, rectangle, topForegroundBrush, bottomForegroundBrush)
/// <summary>
/// 분리된 텍스트 그리기
/// </summary>
/// <param name="graphics"></param>
/// <param name="text"></param>
/// <param name="font"></param>
/// <param name="rectangle"></param>
/// <param name="topForegroundBrush"></param>
/// <param name="bottomForegroundBrush"></param>
private void DrawSplitText
(
Graphics graphics,
string text,
Font font,
Rectangle rectangle,
Brush topForegroundBrush,
Brush bottomForegroundBrush
)
{
Bitmap topBitmap = new Bitmap(rectangle.Width, rectangle.Height);
Bitmap bottomBitmap = new Bitmap(rectangle.Width, rectangle.Height);
using(StringFormat stringFormat = new StringFormat())
{
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
using(Graphics topGraphics = Graphics.FromImage(topBitmap))
{
topGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
topGraphics.FillRectangle(bottomForegroundBrush, rectangle);
topGraphics.DrawString(text, font, topForegroundBrush, rectangle, stringFormat);
}
using(Graphics bottomGraphics = Graphics.FromImage(bottomBitmap))
{
bottomGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
bottomGraphics.FillRectangle(topForegroundBrush, rectangle);
bottomGraphics.DrawString(text, font, bottomForegroundBrush, rectangle, stringFormat);
}
}
RectangleF topRectangle = new RectangleF
(
rectangle.X,
rectangle.Y,
rectangle.Width,
rectangle.Height / 2f
);
using(TextureBrush brush = new TextureBrush(topBitmap))
{
graphics.FillRectangle(brush, topRectangle);
}
RectangleF bottomRectangle = new RectangleF
(
rectangle.X,
topRectangle.Bottom,
rectangle.Width,
rectangle.Height / 2f
);
using(TextureBrush brush = new TextureBrush(bottomBitmap))
{
graphics.FillRectangle(brush, bottomRectangle);
}
topBitmap.Dispose();
bottomBitmap.Dispose();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM] 이미지 리스트에서 이미지 드래그하기 (0) | 2020.07.22 |
---|---|
[C#/WINFORM] 이미지 리스트 편집하기 (0) | 2020.07.22 |
[C#/WINFORM] PrivateFontCollection 클래스 : 커스텀 폰트 사용하기 (0) | 2020.07.22 |
[C#/WINFORM] 싸인파를 따라 반전된 색상으로 텍스트 그리기 (0) | 2020.07.21 |
[C#/WINFORM] 대각선을 따라 반전된 색상으로 텍스트 그리기 (0) | 2020.07.21 |
[C#/WINFORM] 개선된 투명 배경 이미지 구하기 (0) | 2020.07.20 |
[C#/WINFORM] 둥근 모서리 이미지 구하기 (0) | 2020.07.20 |
[C#/WINFORM] 워터마크 추가하기 (0) | 2020.07.19 |
[C#/WINFORM] 직선 방향의 가운데 정렬 텍스트 그리기 (0) | 2020.07.19 |
[C#/WINFORM] Bitmap 클래스 : 비트맵 크기 변경하기 (0) | 2020.07.16 |
댓글을 달아 주세요