public Form1()
{
InitializeComponent();
DesignInitial();
}
#region 폼꾸미기
/// <summary>
/// 반투명 효과 알파 값
/// </summary>
private int percentAlpha = 70;
/// <summary>
/// 반투명 효과 색상
/// </summary>
private Color pb = new Color();
/// <summary>
/// 그라데이션 브러쉬
/// </summary>
private LinearGradientBrush lineGBrush;
/// <summary>
/// 마우스로 폼 드래그 하기
/// </summary>
private Point mCurrentPosition = new Point(0, 0);
/// <summary>
/// 마우스로 폼 드래그할 때 상단 타이틀 모양을 클릭 했을 경우 드래그 하기
/// </summary>
private bool m_titleMove = false;
private void DesignInitial()
{
/* 항상 최상위 상단으로 표현 */
// this.TopMost = true;
/* 컨트롤 박스 없애기 */
this.ControlBox = false;
/* 키 프리뷰 설정 */
this.KeyPreview = true;
/* 하단 그립 없애기 */
this.SizeGripStyle = SizeGripStyle.Hide;
/* 폼 테두리 변경 */
this.FormBorderStyle = FormBorderStyle.None;
/* 더블 버퍼링 설정 */
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);
/* 컬러 설정 */
pb = Color.FromArgb(percentAlpha * 255 / 100, Color.FromArgb(255, 128, 0));
/* 그라데이션 설정 */
lineGBrush = new LinearGradientBrush(
new PointF(0, 0), new PointF(this.Width, 0),
Color.Red,
pb);
/* 라인브러쉬에 블랜드 적용 */
float[] relativeIntensities = { 1.3f, 0.5f, 1.0f };
float[] relativePositions = { 0.0f, 0.1f, 1.0f };
Blend blend = new Blend();
blend.Factors = relativeIntensities;
blend.Positions = relativePositions;
lineGBrush.Blend = blend;
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
this.lineGBrush.Dispose();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
//ESC버턴 클릭시 폼 닫기
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
/* 마우스로 폼 드래그 */
if (e.Button == MouseButtons.Left && e.Y < 16)
{
mCurrentPosition = new Point(-e.X, -e.Y);
this.m_titleMove = true;
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
/* 마우스로 폼 드래그 */
if (e.Button == MouseButtons.Left && this.m_titleMove == true)
{
this.Location = new Point(
this.Location.X + (mCurrentPosition.X + e.X),
this.Location.Y + (mCurrentPosition.Y + e.Y));// 마우스의 이동치를 Form Location에 반영한다.
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
/* 마우스로 폼 드래그 */
if (e.Button == MouseButtons.Left && this.m_titleMove == true)
{
this.Location = new Point(
this.Location.X + (mCurrentPosition.X + e.X),
this.Location.Y + (mCurrentPosition.Y + e.Y));// 마우스의 이동치를 Form Location에 반영한다.
this.m_titleMove = false;
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
/* 바탕화면을 흰색으로 */
e.Graphics.Clear(Color.Black);
/* 브러쉬 설정 */
SolidBrush sBrush = new SolidBrush(Color.FromArgb(255, 128, 0));
sBrush.Color = Color.White;
/* 화면 그리기 */
Image memImage = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(memImage);
/* 상단 title 표현 */
string title = "YouTube Player";
g.FillRectangle(this.lineGBrush, 0, 0, this.Width, 30);
g.DrawString(title, this.Font, sBrush, 5F, 10F);
/* 화면으로 표현 */
e.Graphics.DrawImage(memImage, ClientRectangle);
/* 가비지 수집기로 삭제 */
g.Dispose();
memImage.Dispose();
sBrush.Dispose();
}
#endregion
종료버튼이 없는데 이것은 버튼 하나 생성해서 이미지 파일로 덮어씌운후 이벤트로 종료를 하면됨.
'개발 > C#' 카테고리의 다른 글
[팁] C# 웹브라우저 ESC키로 종료하기 (0) | 2018.01.25 |
---|---|
[팁] C# 웹브라우져를 익스플로러처럼 설정하기 (0) | 2018.01.25 |
[팁] C# 폼로드시 화면꽉차게 하기 (0) | 2018.01.25 |
[팁] C# 이미지 크기 조절 (0) | 2018.01.25 |
[팁] C# 하위폼에서 상위폼으로 데이터 전달 (1) | 2018.01.25 |
[팁] C# 데이터그리드뷰 엔터키 입력시 다음행 이동 금지 (1) | 2018.01.25 |
c# 주소변환 \u003d \u002d (0) | 2018.01.19 |
Listview Checkbox 에 checked된 목록 가져오기 (0) | 2018.01.17 |