l.degroot01
Gebruiker
- Lid geworden
- 18 jan 2003
- Berichten
- 161
Ik ben bezig een UML editor te maken, maar kom er niet uit om een CustomLineCap (een ruitje) te laten inkleuren. Zie hieronder een screenshotje.
Ik gebruik:
Waarbij de eerste parameter het fillpath is en de 2e het Strokepath.
Volgens MSDN mag ik ze niet tegelijk gebruiken dus heb ik hPath verplaatst naar FillPath, maar dan krijg ik een berg fouten.
Een andere optie zou zijn
. Echter tekent hij dan met dezelfde grootte als waar de pen al op staat ingesteld zodat je bijna geen gevuld ruitje kan zien.
Hoe krijg ik dit ruitje nou gevuld zonder hem groter of kleiner te maken?

Ik gebruik:
Code:
CustomLineCap diamond = new CustomLineCap(null, hPath);
Waarbij de eerste parameter het fillpath is en de 2e het Strokepath.
Volgens MSDN mag ik ze niet tegelijk gebruiken dus heb ik hPath verplaatst naar FillPath, maar dan krijg ik een berg fouten.
Een andere optie zou zijn
Code:
myPen.EndCap = LineCap.DiamondAnchor
Hoe krijg ik dit ruitje nou gevuld zonder hem groter of kleiner te maken?
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace UMLeditor
{
class Compositie : UmlComponent
{
private int xBegin, yBegin, xEind, yEind;
private Font lettertype = new Font("verdana", 12);
public Compositie(int xBegin, int yBegin, int xEind, int yEind)
{
this.xBegin = xBegin;
this.yBegin = yBegin;
this.xEind = xEind;
this.yEind = yEind;
}
public override void Teken(Graphics g)
{
SolidBrush myBrush = new SolidBrush(Color.Black);
Pen myPen = new Pen(myBrush);
// Object aanmaken van de klasse GraphicsPath, om een pad vast te leggen voor de CustomLineCap.
GraphicsPath hPath = new GraphicsPath();
// Aanmaken van de coördinaten van het pad, voor de CustomLineCap.
hPath.AddLine(new Point(0, 0), new Point(10, 10));
hPath.AddLine(new Point(10, 10), new Point(0, 20));
hPath.AddLine(new Point(0, 20), new Point(-10, 10));
hPath.AddLine(new Point(-10, 10), new Point(0, 0));
CustomLineCap diamond = new CustomLineCap(null, hPath);
myPen.CustomEndCap = diamond;
g.DrawLine(myPen, xBegin, yBegin, xEind, yEind); // tekent lijn
}
}
}