블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2341)N
Unity3D (577)
Programming (473)
Unreal (4)
Gamebryo (56)
Tip & Tech (186)N
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (20)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (13)
Total1,355,263
Today21
Yesterday363
Statistics Graph

달력

« » 2020.1
      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  

공지사항

태그목록


Download source code (Microsoft Visual C# 2005 Express Edition)

 

image

 

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();
            }
        }
    }
}
 
출처 : http://blog.daum.net/starkcb/63
Posted by blueasa

댓글을 달아 주세요