private bool checkLineProximity(int indexno, int identifier, Graphics daGe) //checks whether if the mouse pointer is on an object (i.e. shape) { Graphics g = daGe; Pen lePen = new Pen(Color.Yellow, 1); g = pictureBox1.CreateGraphics(); g.TranslateTransform(this.pictureBox1.Left + 8, this.pictureBox1.Size.Height + 8); //transforms point-of-origin to the lower left corner of the canvas. g.SmoothingMode = SmoothingMode.HighQuality; switch (identifier) //depending on the "identifier" value, the relevant object will be highlighted { case 2: //Line { Line line = (Line)drawingList[indexno]; if (mainScale == 0) { mainScale = 1; } break; } case 3: //rectangle { rectangle rect = (rectangle)drawingList[indexno]; break; } case 4: //circle { circle tempCircle = (circle)drawingList[indexno]; if (mainScale == 0) { mainScale = 1; } break; } case 5: //polyline { polyline tempPoly = (polyline)drawingList[indexno]; if (mainScale == 0) { mainScale = 1; } break; } case 6: //arc { arc tempArc = (arc)drawingList[indexno]; if (mainScale == 0) { mainScale = 1; } break; } } return(false); }
public void Draw(Graphics g) { g.PageUnit = GraphicsUnit.Millimeter; g.PageScale = 1.0F; Pen lePen = new Pen(Color.Red, 0.01F); g.TranslateTransform(this.pictureBox1.Location.X + 1, this.pictureBox1.Location.Y + (float)YMax - 1 /* this.pictureBox1.Size.Height - 1*/); if (YMin < 0) { g.TranslateTransform(0, -(int)Math.Abs(YMin)); //transforms point-of-origin to the lower left corner of the canvas. } if (XMin < 0) { g.TranslateTransform((int)Math.Abs(XMin), 0); } //g.SmoothingMode = SmoothingMode.AntiAlias; g.DrawEllipse(lePen, 5, 5, 20, 20); foreach (DrawingObject obj in objectIdentifier) //iterates through the objects { switch (obj.shapeType) { case 2: //line { Line temp = (Line)drawingList[obj.indexNo]; lePen.Color = temp.AccessContourColor; lePen.Width = temp.AccessLineWidth; highlightedRegion.Location = new Point((int)temp.GetStartPoint.X, (int)temp.GetStartPoint.Y); highlightedRegion.Width = (int)(temp.GetStartPoint.X - temp.GetEndPoint.X); highlightedRegion.Height = (int)(temp.GetStartPoint.Y - temp.GetEndPoint.Y); if (mainScale == 0) { mainScale = 1; } temp.Draw(lePen, g, mainScale); break; } case 3: //rectangle { rectangle temp = (rectangle)drawingList[obj.indexNo]; lePen.Color = temp.AccessContourColor; lePen.Width = temp.AccessLineWidth; temp.Draw(lePen, g); break; } case 4: //circle { circle temp = (circle)drawingList[obj.indexNo]; lePen.Color = temp.AccessContourColor; lePen.Width = temp.AccessLineWidth; if (mainScale == 0) { mainScale = 1; } temp.Draw(lePen, g, mainScale); break; } case 5: //polyline { polyline temp = (polyline)drawingList[obj.indexNo]; lePen.Color = temp.AccessContourColor; lePen.Width = temp.AccessLineWidth; if (mainScale == 0) { mainScale = 1; } temp.Draw(lePen, g, mainScale); break; } case 6: //arc { arc temp = (arc)drawingList[obj.indexNo]; lePen.Color = temp.AccessContourColor; lePen.Width = temp.AccessLineWidth; if (mainScale == 0) { mainScale = 1; } temp.Draw(lePen, g, mainScale); break; } } } // g.Dispose(); //not disposed because "g" is get from the paintbackground event.. lePen.Dispose(); }