Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 윈모데브
- 황광진
- 김춘배
- 실버라이트 코리아
- 쉐어포인트코리아
- 윈도우모바일
- 헤이맨
- 소년포비소프트
- 마이크로소프트
- 윈도우 모바일
- windows mobile 6.5
- 신동혁
- 윈도데브
- UX베이커리
- 서진호
- 윈도우폰7
- 거제도
- winmodev
- 윈도우폰
- MIX10
- 안드로이드
- 옴니아2
- 루나네스
- 훈스닷넷
- 주신영
- 데브피아
- 신석현
- 지승욱
- 소년포비
- 스마트폰
Archives
- Today
- Total
소년포비의 세계정복!!
윈폼에서 선그리기 본문
Download source code (Microsoft Visual C# 2005 Express Edition)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace WindowsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<PointF> PointList = new List<PointF>(); int pointIndex = 0; private void Form1_Load(object sender, EventArgs e) { SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); PointF[] pt = new PointF[] { new PointF(100, 100), new PointF(150, 150), new PointF(200, 100), new PointF(100, 100), }; // Get Points From Line(s) float curDist = 0; float distance = 0; for (int i = 0; i < pt.Length - 1; i++) { PointF ptA = pt[i]; PointF ptB = pt[i + 1]; float deltaX = ptB.X - ptA.X; float deltaY = ptB.Y - ptA.Y; curDist = 0; distance = (float)Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2)); while (curDist < distance) { curDist++; float offsetX = (float)((double)curDist / (double)distance * (double)deltaX); float offsetY = (float)((double)curDist / (double)distance * (double)deltaY); PointList.Add(new PointF(ptA.X + offsetX, ptA.Y + offsetY)); } } } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; for (int i = 0; i < pointIndex; i++) { e.Graphics.DrawLine(Pens.Black, PointList[i].X, PointList[i].Y, PointList[i + 1].X, PointList[i + 1].Y); } } private void timer1_Tick(object sender, EventArgs e) { if (pointIndex < PointList.Count - 1) { pointIndex++; this.Refresh(); } } } }
'프로그램 세상 > C#' 카테고리의 다른 글
비 동기 웹 서비스 호출(Asynchronous WebService) (0) | 2009.10.06 |
---|---|
[스크랩] LINQ 로 LIST 제네릭과 DICTIONARY 로 차집합 구해보기 (0) | 2009.10.05 |
[C#]Listview 변경 추가, 삭제, 수정 및 사이즈 변경 (0) | 2009.10.02 |
[C#]트레이 아이콘 만들기 (0) | 2009.10.02 |
텍스트 박스에 숫자와 소수점, 백스페이스만 입력가능하게 하는 이벤트 (0) | 2009.10.02 |