采用c#windows窗体应用程序
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DrawLine
{
public partial class
Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int x0,y0,x1,y1;
TimeSpan time;
void Gdibluedrawellipse(int x, int
y)//圆的外接矩阵的左顶点(画蓝色的椭圆)
{
// Pen pen
= Pens.Blue ;
Graphics
gdi = this.CreateGraphics();
//gdi.DrawEllipse(pen ,x,y,20,20);
gdi.FillEllipse(Brushes.Blue, x, y, 2, 2);
}
void Gdireddrawellipse(int x, int
y)//圆的外接矩阵的左顶点(画红色的椭圆)
{
// Pen pen
= Pens.Red ;
Graphics
gdi = this.CreateGraphics();
gdi.FillEllipse(Brushes.Red, x, y,2, 2);
//
gdi.DrawEllipse(pen, x, y, 20, 20);
}
void GdiGreendrawellipse(int
x, int y)//圆的外接矩阵的左顶点(画绿色的椭圆)
{
// Pen pen
= Pens.Red ;
Graphics
gdi = this.CreateGraphics();
gdi.FillEllipse(Brushes.Green, x, y,2, 2);
//
gdi.DrawEllipse(pen, x, y, 20, 20);
}
private void button1_Click(object sender,
EventArgs e)
{
//this.Refresh();//刷新一下
//取得第一个时间
DateTime
time1 = DateTime.Now;
float
x;
float dx,
dy, k, y;
dx = x1 -
x0;
dy = y1 -
y0;
k = dy /
dx;
y =
y0;
if (y0
> y1)
{
x0 =
int.Parse(textBox3.Text);
y0 =
int.Parse(textBox4.Text);
x1 =
int.Parse(textBox1.Text);
y1 =
int.Parse(textBox2.Text);
}
if
(Math.Abs(k)<=1)
{
if (x0 < x1)
{
for (x = x0; x <= x1; x++)
{
Gdibluedrawellipse((int)x, (int)(y + 0.5));
y = y +
k;
}
}
else {
for (x = x0; x >= x1; x--)
{
Gdibluedrawellipse((int)x, (int)(y + 0.5));
y = y +
Math.Abs(k);
}
}
}
else
{
x = x0;
if (y0 < y1)
{
for (y = y0; y <= y1; y++)
{
Gdibluedrawellipse((int)(x + 0.5), (int)y);
x = x + 1
/ k;
}
}
else
{
for (y = y0; y >= y1; y--)
{
Gdibluedrawellipse((int)(x + 0.5), (int)y);
x = x + 1
/ k;
}
}
}
//取得第二个时间
DateTime
time2 = DateTime.Now;
//相减得到时间差
time= time2 - time1;
textBox5.Text=time.ToString();
}
private void button2_Click(object sender,
EventArgs e)
{
//取得第一个时间
DateTime
time1 = DateTime.Now;
float
k;
int x, y,
a, b, d1, d2, d;
a = y0 -
y1; b = x1 - x0;
k =
(float)(-a)/ (float)b;
d = 2 * a
+ b; d1 = 2 * a; d2 = 2 * (a + b);
x = x0; y
= y0; Gdireddrawellipse(x, y);
if (k
<= 1 && k >= 0)
{
while (x < x1)
{
x = x + 1;
if (d < 0) { y = y + 1; d += d2; }
else { d += d1; }
Gdireddrawellipse(x, y);
}
}
else if (k
>= 1 )
{
d = a + 2 * b;
while (y < y1)
{
y = y + 1;
if (d > 0) { x = x + 1; d += 2*a+2*b; }
else { d += 2*b; }
Gdireddrawellipse(x, y);
}
}
else if
(k<-1)
{
d = -a + 2 * b;
while (y < y1)
{
y = y + 1;
if (d < 0) { x = x - 1; d += -2 * a + 2 * b;
}
else { d += 2 * b; }
Gdireddrawellipse(x, y);
}
}
else
{
d = b - 2 * a;
while (x > x1)
{
x = x - 1;
if (d > 0) { y = y + 1; d += -2 * a + 2 * b;
}
else { d += -2*a; }
Gdireddrawellipse(x, y);
}
}
//取得第二个时间
DateTime
time2 = DateTime.Now;
//相减得到时间差
time =
time2 - time1;
textBox5.Text = time.ToString();
}
private void button4_Click(object sender,
EventArgs e)
{
x0 =
int.Parse(textBox1.Text);
y0 =
int.Parse(textBox2.Text);
x1=
int.Parse(textBox3.Text);
y1 =
int.Parse(textBox4.Text);
}
private void button3_Click(object sender,
EventArgs e)
{
DateTime
time1 = DateTime.Now;
int x, y,
dx, dy,e0;
float
k;
dx = x1 -
x0;
dy = y1 -
y0;
k =
(float)dy /(float)dx;
e0 =
-dx;
x =
x0;
y =
y0;
if (k
<= 1 && k >=0)
{
for (int i = 0; i <= dx;
i++)
{
GdiGreendrawellipse(x, y);
x = x + 1;
e0 = e0 + 2 * dy;
if (e0 >= 0)
{
y = y +
1;
e0 = e0 -
2 * dx;
}
}
}
else if (k
> 1)
{
for (int i = 0; i <= dy;
i++)
{
GdiGreendrawellipse(x, y);
y = y + 1;
e0 = e0 + 2 * dx;
if (e0 >= 0)
{
x= x +
1;
e0 = e0 -
2 * dy;
}
}
}
else if (k
< -1)
{
for (int i = 0; i <= dy;
i++)
{
GdiGreendrawellipse(x, y);
y = y + 1;
e0 = e0 - 2 * dx;
if (e0 >= 0)
{
x = x -
1;
e0 = e0 -
2 * dy;
}
}
}
else
{
for (int i = 0; i >= dx;
i--)
{
GdiGreendrawellipse(x, y);
x = x - 1;
e0 = e0 - 2 * dy;
if (e0 <= 0)
{
y = y +
1;
e0 = e0 -
2 * dx;
}
}
}
//取得第二个时间
DateTime
time2 = DateTime.Now;
//相减得到时间差
time =
time2 - time1;
textBox5.Text = time.ToString();
}
}
}
加载中,请稍候......