C# - CustomLineCap laten vullen (Inkleuren)

Status
Niet open voor verdere reacties.

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.

ruitje.png


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
. 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?

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
            
        }
    }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan