GDI+ (GDIPlus) Überlappende Transparenz Bereiche mit Pen

  • Hallo,

    ich habe zwei linien mit _GDIPlus_GraphicsDrawLine. Der Anfangspunkt der 2. Linie ist der Endpunkt der Ersten.

    Weiter habe ich einen Pen mit einer Transparenz und einer sehr grossen Breite.

    Also pen wie folgt erzeugt: $hPen = _GDIPlus_PenCreate (0x65FFFF00)

    (die 65 steht für die Transparenz)

    Die dicken Linien überlappen sich gegenseitig wegen ihrer Breite wenn die Richtung geändert wird.

    Nun ist die Farbe in dem Überlappungsbereich doppelt so stark. Es addiert sich wohl. Ich hätte es gerne aber gleichmässig.

    Beim Pen habe ich keine Option gefunden weche das addieren der Farbe verhindert. Ich fürchte das man sowas mit GDI PLus gar nicht hinbekommt.

    Eine Polylinie gibt es auch nicht. Ausserdem möchte ich die Breite von Linie zu Linie auch verändern.

    Kann man das mit GDI Plus doch lösen?

    Die runden Kreise gibt es mit _GDIPlus_PenSetEndCap($hPen,$GDIP_LINECAPROUNDANCHOR).

    Leider kann man dies nicht auch für den Anfang einer Linie definieren.

    Eine Art PenSetBeginCap wäre auch nützlich.


    http://img692.imageshack.us/img692/1939/transparent1.png

  • Polylinie gibt es, und die Breite kann man auch einstellen. Erstell dir für jeden Linientyp einen eigenen Pen ;) Das mit der Transparenz weiß ich auch nicht wie man es umgehen kann, aber es gibt immer einen weg.

    [autoit]

    _GDIPlus_PenSetWidth
    _GDIPlus_GraphicsDrawPolygon

    [/autoit]
  • funkey
    Polygon kenne ich, hier wird aber der letze Punkt automatisch wieder mit dem ersten punkt verbunden, das möchte ich ja nicht, ok, man könnte die linie wieder einfach zurück zeichnen lassen, so dass dann der letzte punkt = dem ersten punkt ist. so entsteht dann keine Fläche.
    Und innerhalb des Polygons kann man ja auch nicht den Pen verändern (was ich eben möchte), man gibt ja nur einmal den Pen mit.

    Einmal editiert, zuletzt von Traumseher (6. März 2010 um 11:56)

  • den ganzen Bereich als Polygon machen und den dann füllen lassen ist auch viel zu aufwendig, da ich den Abschluss der ganzen Linie rund haben möchte