public override void Draw(OpenGLControl glControl)
{
//Prepare data
long x2 = tmpX2;
long y2 = tmpY2;
p = 5 / 4 - radius;
start = new Point(0, radius);
base.Draw(glControl);
int k = 0;
var gl = glControl.OpenGL;
gl.PushMatrix();
Affine.Rotate(center, gocXoay, glControl.OpenGL);
gl.PointSize(thickness);
gl.Begin(OpenGL.GL_POINTS);
while (true)
{
if (start.X > start.Y)
{
//Khi vẽ xong hình tròn
gl.End();
gl.Flush();
if (veDdk == true)
{
DrawControlPoint(glControl);
}
gl.PopMatrix();
return;
}
//Vẽ điểm cũ, và 7 điểm đối xứng của nó
gl.Vertex(center.X - start.X, glControl.Height - (center.Y - start.Y));
gl.Vertex(center.X + start.X, glControl.Height - (center.Y + start.Y));
gl.Vertex(center.X - start.X, glControl.Height - (center.Y + start.Y));
gl.Vertex(center.X + start.X, glControl.Height - (center.Y - start.Y));
gl.Vertex(center.X + start.Y, glControl.Height - (center.Y + start.X));
gl.Vertex(center.X - start.Y, glControl.Height - (center.Y + start.X));
gl.Vertex(center.X + start.Y, glControl.Height - (center.Y - start.X));
gl.Vertex(center.X - start.Y, glControl.Height - (center.Y - start.X));
start.X++;
x2 = x2 + 2;
if (p < 0)
{
p = p + x2 + 1;
}
else
{
start.Y--;
y2 = y2 - 2;
p = p + x2 - y2 + 1;
}
k++;
}
}