private void CategorieListeZeichnen(PaintEventArgs e, ref int x, ref int y, List <AIMLCategory> liste, PfeilArten pfeilArt, Point dockPunktAnAktKategorie) { Pen pen = null; Pen pen2 = null; Color backgroundColor = Color.White; string kontext = ""; switch (pfeilArt) { case PfeilArten.VorgaengerTHAT: case PfeilArten.NachfolgerTHAT: kontext = "THAT"; backgroundColor = Color.FromArgb(240, 240, 255); break; case PfeilArten.VorgaengerSRAI: case PfeilArten.NachfolgerSRAI: kontext = "SRAI"; backgroundColor = Color.FromArgb(210, 210, 230); break; case PfeilArten.Redundanz: kontext = "IDENT"; backgroundColor = Color.FromArgb(250, 250, 255); break; } switch (pfeilArt) { case PfeilArten.VorgaengerTHAT: case PfeilArten.VorgaengerSRAI: case PfeilArten.NachfolgerTHAT: case PfeilArten.NachfolgerSRAI: pen = new Pen(Color.Gray, 1f); pen2 = new Pen(Color.Gray, 1f); pen2.EndCap = LineCap.ArrowAnchor; break; case PfeilArten.Redundanz: pen = new Pen(Color.LightBlue, 1f); pen2 = new Pen(Color.LightBlue, 1f); pen2.EndCap = LineCap.ArrowAnchor; break; } foreach (AIMLCategory item in liste) { WorkflowElementCategory workflowElementCategory = new WorkflowElementCategory(kontext, item, this._teilBreite, this._teilHoehe); workflowElementCategory.X = x; workflowElementCategory.Y = y; workflowElementCategory.BackgroundColor = backgroundColor; workflowElementCategory.Paint(e); this._klickbereiche.Add(new WorkflowKlickbereich(workflowElementCategory.Category, new Rectangle(workflowElementCategory.X, workflowElementCategory.Y, workflowElementCategory.Breite, workflowElementCategory.Hoehe))); switch (pfeilArt) { case PfeilArten.NachfolgerTHAT: case PfeilArten.NachfolgerSRAI: { Point pt = new Point(x, y + this._teilHoehe / 2); Point pt2 = new Point(x - this._strichLaenge / 3, y + this._teilHoehe / 2); Point point = new Point(x - this._strichLaenge / 3, dockPunktAnAktKategorie.Y); e.Graphics.DrawLine(pen2, pt2, pt); e.Graphics.DrawLine(pen, pt2, point); e.Graphics.DrawLine(pen, point, dockPunktAnAktKategorie); break; } case PfeilArten.Redundanz: { Point pt = new Point(x, y + this._teilHoehe / 2); Point pt2 = new Point(x - this._strichLaenge / 4, y + this._teilHoehe / 2); Point point = new Point(x - this._strichLaenge / 4, dockPunktAnAktKategorie.Y + 10); Point point2 = new Point(dockPunktAnAktKategorie.X, dockPunktAnAktKategorie.Y + 10); e.Graphics.DrawLine(pen2, pt2, pt); e.Graphics.DrawLine(pen, pt2, point); e.Graphics.DrawLine(pen, point, point2); e.Graphics.DrawLine(pen2, point2, dockPunktAnAktKategorie); break; } case PfeilArten.VorgaengerTHAT: case PfeilArten.VorgaengerSRAI: { Point pt = new Point(x + this._teilBreite, y + this._teilHoehe / 2); Point pt2 = new Point(x + this._teilBreite + this._strichLaenge / 2, y + this._teilHoehe / 2); Point point = new Point(x + this._teilBreite + this._strichLaenge / 2, dockPunktAnAktKategorie.Y); e.Graphics.DrawLine(pen, pt2, pt); e.Graphics.DrawLine(pen, pt2, point); e.Graphics.DrawLine(pen2, point, dockPunktAnAktKategorie); break; } } y += this._teilHoehe + this._abstand; } if (pen != null) { pen.Dispose(); } if (pen2 != null) { pen2.Dispose(); } }
private void CategorieListeZeichnen( PaintEventArgs e, ref int x, ref int y, List <AIMLCategory> liste, ucWorkflow.PfeilArten pfeilArt, Point dockPunktAnAktKategorie) { Pen pen1 = (Pen)null; Pen pen2 = (Pen)null; Color color = Color.White; string kontext = ""; switch (pfeilArt) { case ucWorkflow.PfeilArten.VorgaengerTHAT: case ucWorkflow.PfeilArten.NachfolgerTHAT: kontext = "THAT"; color = Color.FromArgb(240, 240, (int)byte.MaxValue); break; case ucWorkflow.PfeilArten.VorgaengerSRAI: case ucWorkflow.PfeilArten.NachfolgerSRAI: kontext = "SRAI"; color = Color.FromArgb(210, 210, 230); break; case ucWorkflow.PfeilArten.Redundanz: kontext = "IDENT"; color = Color.FromArgb(250, 250, (int)byte.MaxValue); break; } switch (pfeilArt) { case ucWorkflow.PfeilArten.VorgaengerTHAT: case ucWorkflow.PfeilArten.VorgaengerSRAI: case ucWorkflow.PfeilArten.NachfolgerTHAT: case ucWorkflow.PfeilArten.NachfolgerSRAI: pen1 = new Pen(Color.Gray, 1f); pen2 = new Pen(Color.Gray, 1f); pen2.EndCap = LineCap.ArrowAnchor; break; case ucWorkflow.PfeilArten.Redundanz: pen1 = new Pen(Color.LightBlue, 1f); pen2 = new Pen(Color.LightBlue, 1f); pen2.EndCap = LineCap.ArrowAnchor; break; } foreach (AIMLCategory category in liste) { WorkflowElementCategory workflowElementCategory = new WorkflowElementCategory(kontext, category, this._teilBreite, this._teilHoehe); workflowElementCategory.X = x; workflowElementCategory.Y = y; workflowElementCategory.BackgroundColor = color; workflowElementCategory.Paint(e); this._klickbereiche.Add((object)new WorkflowKlickbereich(workflowElementCategory.Category, new Rectangle(workflowElementCategory.X, workflowElementCategory.Y, workflowElementCategory.Breite, workflowElementCategory.Hoehe))); switch (pfeilArt) { case ucWorkflow.PfeilArten.VorgaengerTHAT: case ucWorkflow.PfeilArten.VorgaengerSRAI: Point pt2_1 = new Point(x + this._teilBreite, y + this._teilHoehe / 2); Point pt1_1 = new Point(x + this._teilBreite + this._strichLaenge / 2, y + this._teilHoehe / 2); Point point1 = new Point(x + this._teilBreite + this._strichLaenge / 2, dockPunktAnAktKategorie.Y); e.Graphics.DrawLine(pen1, pt1_1, pt2_1); e.Graphics.DrawLine(pen1, pt1_1, point1); e.Graphics.DrawLine(pen2, point1, dockPunktAnAktKategorie); break; case ucWorkflow.PfeilArten.Redundanz: Point pt2_2 = new Point(x, y + this._teilHoehe / 2); Point pt1_2 = new Point(x - this._strichLaenge / 4, y + this._teilHoehe / 2); Point point2 = new Point(x - this._strichLaenge / 4, dockPunktAnAktKategorie.Y + 10); Point point3 = new Point(dockPunktAnAktKategorie.X, dockPunktAnAktKategorie.Y + 10); e.Graphics.DrawLine(pen2, pt1_2, pt2_2); e.Graphics.DrawLine(pen1, pt1_2, point2); e.Graphics.DrawLine(pen1, point2, point3); e.Graphics.DrawLine(pen2, point3, dockPunktAnAktKategorie); break; case ucWorkflow.PfeilArten.NachfolgerTHAT: case ucWorkflow.PfeilArten.NachfolgerSRAI: Point pt2_3 = new Point(x, y + this._teilHoehe / 2); Point pt1_3 = new Point(x - this._strichLaenge / 3, y + this._teilHoehe / 2); Point point4 = new Point(x - this._strichLaenge / 3, dockPunktAnAktKategorie.Y); e.Graphics.DrawLine(pen2, pt1_3, pt2_3); e.Graphics.DrawLine(pen1, pt1_3, point4); e.Graphics.DrawLine(pen1, point4, dockPunktAnAktKategorie); break; } y += this._teilHoehe + this._abstand; } if (pen1 != null) { pen1.Dispose(); } if (pen2 == null) { return; } pen2.Dispose(); }