private void DrawGrid(Rectangle rect, Graphics g) { if (startSurfaceGrid.Count == 0) { surface = new BezierSurface(); surface.SetPoints(startPoints); startSurfaceGrid = surface.GetSurfaceGridPoints(tolerance, rows, columns); surfaceGridPoints = null; startSurfaceCells.Clear(); surfaceCells = null; } var drawGridPoints = Point3Utils.GetObjectProjection(surfaceGridPoints ?? startSurfaceGrid, rect.Width, rect.Height); g.DrawGrid(Pens.Black, drawGridPoints); }
private void Canvas_Paint(object sender, PaintEventArgs e) { var rect = new Rectangle(Canvas.Location.X, Canvas.Location.Y, Canvas.Size.Width, Canvas.Size.Height); DrawXYAxes(e.Graphics, rect); var points = Point3Utils.GetCurveProjection(window.Points, Canvas.Size.Width, Canvas.Size.Height, isIsometric: false).ToArray(); e.Graphics.DrawPolygon(Pens.Black, points); e.Graphics.DrawPoints(Brushes.Black, points, pointRadius); e.Graphics.DrawSections(Pens.Red, sections, Canvas.Size.Width, Canvas.Size.Height, isIsometric: false); if (isVisibleHighlighted) { HighlightVisible(e.Graphics, rect); } }
private void Canvas_Paint(object sender, PaintEventArgs e) { var rect = new Rectangle(Canvas.Location.X, Canvas.Location.Y, Canvas.Size.Width, Canvas.Size.Height); DrawXYZAxes(e.Graphics, rect); var basePointsArray = points.Select(row => row.Select(point => point.GetDrawingPoint(rect.Width, rect.Height)).ToArray()).ToArray(); e.Graphics.DrawPoints(Brushes.Black, basePointsArray, pointRadius); if (startSurfaceGrid.Count == 0) { surface = new BezierSurface(); surface.SetPoints(startPoints); startSurfaceGrid = surface.GetSurfaceGridPoints(tolerance, rows, columns); surfaceGridPoints = null; } var drawPoints = Point3Utils.GetObjectProjection(surfaceGridPoints ?? startSurfaceGrid, rect.Width, rect.Height); e.Graphics.DrawGrid(Pens.Red, drawPoints); }
private void DrawCells(Rectangle rect, Graphics g) { var innerBrush = Brushes.Cyan; var outerBrush = Brushes.DarkOrchid; if (startSurfaceCells.Count == 0) { surface = new BezierSurface(); surface.SetPoints(startPoints); startSurfaceCells = surface.GetSurfaceCells(tolerance, rows, columns); surfaceCells = null; } var check = startSurfaceCells; var ordered = (surfaceCells ?? startSurfaceCells).OrderByDescending(cell => cell.FurthestDistance); foreach (SurfaceCell cell in ordered) { var drawPoints = Point3Utils.GetCurveProjection(cell.ToList(), rect.Width, rect.Height).ToArray(); g.FillPolygon(cell.IsFront ? outerBrush : innerBrush, drawPoints); } }