728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 크기
/// </summary>
private Size size = new Size(20, 20);
/// <summary>
/// 위치
/// </summary>
private Point position = new Point(20, 20);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 위치 - Position
/// <summary>
/// 위치
/// </summary>
public Point Position
{
get
{
return this.position;
}
set
{
if(value.X < 0)
{
this.position.X = ClientSize.Width - this.size.Width;
}
else if(value.X + this.size.Width > ClientSize.Width)
{
this.position.X = 0;
}
else
{
this.position.X = value.X;
}
if(value.Y < 0)
{
this.position.Y = ClientSize.Height - this.size.Height;
}
else if(value.Y + this.size.Height > ClientSize.Height)
{
this.position.Y = 0;
}
else
{
this.position.Y = value.Y;
}
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
SetStyle(ControlStyles.DoubleBuffer , true);
SetStyle(ControlStyles.UserPaint , true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 페인트시 처리하기 - OnPaint(e)
/// <summary>
/// 페인트시 처리하기
/// </summary>
/// <param name="e">이벤트 발생자</param>
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillRectangle
(
new SolidBrush(Color.Red),
Position.X,
Position.Y,
this.size.Width,
this.size.Height
);
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 폼 로드시 처리하기 - Form_Load(sender, e)
/// <summary>
/// 폼 로드시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void Form_Load(object sender, EventArgs e)
{
this.timer.Start();
}
#endregion
#region 폼 키 눌림시 처리하기 - Form_KeyDown(sender, e)
/// <summary>
/// 폼 키 눌림시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyValue == 37)
{
Position = new Point(Position.X - this.size.Width, Position.Y);
}
if(e.KeyValue == 38)
{
Position = new Point(Position.X, Position.Y - this.size.Width);
}
if(e.KeyValue == 39)
{
Position = new Point(Position.X + this.size.Height, Position.Y);
}
if(e.KeyValue == 40)
{
Position = new Point(Position.X, Position.Y + this.size.Height);
}
}
#endregion
#region 타이머 틱 발생시 처리하기 - timer_Tick(sender, e)
/// <summary>
/// 타이머 틱 발생시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void timer_Tick(object sender, EventArgs e)
{
Text = string.Format("{0} {1}", DateTime.Now, Position);
Refresh();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM] 키움증권 OpenAPI 사용하기 (0) | 2018.02.02 |
---|---|
[C#/WINFORM] ListBox 클래스 : OnDrawItem 메소드를 사용해 리스트 박스 항목 그리기 (0) | 2018.02.02 |
[C#/WINFORM] 시계 컨트롤 사용하기 (0) | 2018.02.01 |
[C#/WINFORM] YUV 재생기 사용하기 (0) | 2018.01.31 |
[C#/WINFORM] 화상 키보드 사용하기 (0) | 2018.01.30 |
[C#/WINFORM] Control 클래스 : SetStyle 메소드를 사용해 깜박임 방지하기 (0) | 2018.01.28 |
[C#/WINFORM] 명령 프롬프트를 모방한 콘솔 컨트롤 사용하기 (0) | 2018.01.22 |
[C#/WINFORM] 마우스 자동화 하기 (0) | 2018.01.20 |
[C#/WINFORM] Form 클래스 : InvokeOnClick 메소드를 사용해 컨트롤 클릭하기 (0) | 2018.01.20 |
[C#/WINFORM] SendMessage API를 사용해 컨트롤 클릭하기 (0) | 2018.01.20 |
[C#/WINFORM] 특수 키 상태 조사하기 (0) | 2018.01.17 |
댓글을 달아 주세요