private void toolStripButton13_Click(object sender, EventArgs e) { UnCheckAllStylePainting(); CheckStylePainting(sender); stylePainting = StylePainting.Symmetric; pictureBox1.Invalidate(); }
public Form1() { stripChoice = ToolStripChoice.DrawFigure; stylePainting = StylePainting.Brezenham; collection = new CollectionFigure(); isMoving = false; InitializeComponent(); }
public static void BrezenhamAlgorithm(this Graphics g, Models.Vertice start, Models.Vertice end, Pen pen, Brush brush, StylePainting stylePainting) { if (stylePainting == StylePainting.DrawLine) { g.DrawLine(pen, start.x, start.y, end.x, end.y); } else if (stylePainting == StylePainting.Brezenham) { double a = (double)(end.y - start.y) / (end.x - start.x); if (a > 1) { g.MidpointLineN_NE(brush, start.x, start.y, end.x, end.y); g.MidpointLineN_NE(brush, end.x, end.y, start.x, start.y); } else if (a <= 1 && a > 0) { g.MidpointLineE_NE(brush, start.x, start.y, end.x, end.y); g.MidpointLineE_NE(brush, end.x, end.y, start.x, start.y); } else if (a <= 0 && a >= -1) { g.MidpointLineE_SE(brush, start.x, start.y, end.x, end.y); g.MidpointLineE_SE(brush, end.x, end.y, start.x, start.y); } else { g.MidpointLineS_SE(brush, start.x, start.y, end.x, end.y); g.MidpointLineS_SE(brush, end.x, end.y, start.x, start.y); } } else if (stylePainting == StylePainting.Symmetric) { double a = (double)(end.y - start.y) / (end.x - start.x); if (a > 1) { g.SymmetricLineN_NE(brush, start.x, start.y, end.x, end.y); g.SymmetricLineN_NE(brush, end.x, end.y, start.x, start.y); } else if (a <= 1 && a > 0) { g.SymmetricLineE_NE(brush, start.x, start.y, end.x, end.y); g.SymmetricLineE_NE(brush, end.x, end.y, start.x, start.y); } else if (a <= 0 && a >= -1) { g.SymmetricLineE_SE(brush, start.x, start.y, end.x, end.y); g.SymmetricLineE_SE(brush, end.x, end.y, start.x, start.y); } else { g.SymmetricLineS_SE(brush, start.x, start.y, end.x, end.y); g.SymmetricLineS_SE(brush, end.x, end.y, start.x, start.y); } } else if (stylePainting == StylePainting.WU) { //Rozwiazanie zaczerpniete z https://rosettacode.org/wiki/Xiaolin_Wu%27s_line_algorithm?fbclid=IwAR3NZV-yyZdm4uB8sM76pNIRu-bZZbcsdD7TMNKLknokcgbq8pjbtyu3OWA#C.23 WU wu = new WU(start.x, start.y, end.x, end.y, Color.Black, g); g = wu.Draw(); } }