﻿Änderungen:

gSetPenImage()                                               - unterstützt jetzt auch den Alphakanal von PB Images,
                                                               so daß Transparenz mit PenImages möglich ist.

Neuigkeiten:

gDrawImage( Image, x, y [,width, height] )                   - wie PB, zeichnen von Bildern mit optionaler Skalierung nach (width,height).

gDrawAlphaImage( Image, x, y [,width, height [,Alpha] ] )    - zeichnen von Bildern mit optionaler Skalierung nach (width,height).
                                                               dabei kann zusätzlich ein Alphawert angegeben werden um auch
                                                               Bilder ohne Alphakanal transparent zu zeichnen.
                                                               Der Alphawert kann zwischen 0.0 und 1.0 liegen (nicht wie bei PB 0-255).


gDrawClippedImage( Image, x,y,width,height, clipX, clipY, clipWidth, clipHeight [,Alpha] )

                                                             - zeichnen von Bildern mit optionaler Skalierung nach (width,height)
                                                               und Clipping.
                                                               Die Clipping-Parameter geben dabei an, welcher Ausschnitt aus dem
                                                               Bild angezeigt werden soll.
                                                               Zusätzlich kann auch hier ein optionaler Alphawert zwischen 0.0 und 1.0
                                                               angegeben werden.


Alle 3 DrawImage-Befehle ( gDrawImage(), gDrawAlphaImage(), gDrawClippedImage() )
haben als erstes Argument ein 'Image'.
'Image' kann sein:
    1.) eine PureBasic Image Nummer
    2.) eine ImageID()
    3.) ein gepuffertes Bild, siehe gBufferImage()


gImage.i = gBufferImage()                                    - gibt ein gImage zurück. Das ist ein GDI+ Image, und kann somit schneller
                                                               verarbeitet werden als PB Images, da diese immer erst in GDI+ Images
                                                               gewandelt werden müssen.
                                                               Bei wiederholtem anzeigen des gleichen Bildes oder Performance-Problemen
                                                               ist gBufferImage() zu empfehlen.

gFreeImage(gImage)                                           - gibt ein gImage wieder frei, welches mit gBufferImage() erstellt wurde.
                                                               Nicht frei gegebene gImages werden beim beenden des Programmes in gEnd()
                                                               automatisch frei gegeben.



gRoundBox( x, y, width, height, roundX, roundY [, Color] )   - wie PB



gClipBox( x, y, width, height [,combineMode] )               - setzt den Clippingbereich für die nachfolgenden Zeichenoperationen
                                                               in Form eines Rechtecks.
                                                               Nachfolgende Zeichenoperationen sind auf den Clippingbereich beschränkt.

gResetClip()                                                 - setzt den Clippingbereich zurück, so daß nachfolgende Zeichenbefehle
                                                               wieder auf den ganzen Zeichenbereich wirken.

gClipPath( [path [,combineMode]] )                           - setzt den Clippingbereich für die nachfolgenden Zeichenoperationen
                                                               in Form eines Paths.
                                                               Damit kann man nicht-rechteckige Formen als Clippingbereich setzen.
                                                               Nachfolgende Zeichenoperationen sind auf diesen Clippingbereich beschränkt.
                                                               Optional kann ein Path angegeben werden. Ist dieser Path = #PB_Default,
                                                               wird der interne Path von gDrawingMode(#PB_2DDrawing_Path) verwendet.
                                                               
gClipBox() und gClipPath() unterstützen beide den
optionalen Parameter 'combineMode'. Dadurch kann
man Clippingbereiche kombinieren.
Folgende Flags werden für combineMode unterstützt:

  #CombineModeReplace     ; 0 - Specifies that the existing clipping region is replaced by the new clipping region.
  #CombineModeIntersect   ; 1 - Specifies that the existing clipping region is replaced by the intersection of itself and the new clipping region. 
  #CombineModeUnion       ; 2 - Specifies that the existing clipping region is replaced by the union of itself and the new clipping region.
  #CombineModeXor         ; 3 - Specifies that the existing clipping region is replaced by the result of performing an XOR on the two clipping regions.
                          ;     A point is in the XOR of two clipping regions if it is in one clipping region or the other but not in both clipping regions.
  #CombineModeExclude     ; 4 - Specifies that the existing clipping region is replaced by the portion of itself that is outside of the new clipping region.
  #CombineModeComplement  ; 5 (Exclude From)
                          ;   - Specifies that the existing clipping region is replaced by the portion of the new clipping region that is outside of the existing clipping region. 

Default ist #CombineModeReplace, um einen neuen Clippingbereich anzulegen.
Mit #CombineModeUnion fügt man den neuen Clippingbereich dem Alten hinzu.



gDrawingMode(#PB_2DDrawing_Path)                             - neuer Zeichenmodus #PB_2DDrawing_Path mit dem man in ein internes
                                                               Path-Objekt zeichnet.
                                                               Nachfolgende Zeichenoperationen sind nicht auf dem Zeichenbereich
                                                               sichtbar, sondern werden in dem internen Path-Objekt aufgenommen.
                                                               Man zeichnet also, sozusagen, in einen virtuellen Zeichenbereich.
                                                               
                                                               Nachdem man in diesen Path gezeichnet hat, kann man ihn:
                                                                 
                                                                 - mit gDrawPath() anzeigen
                                                                 
                                                                 - mit gGetPath() zwischenspeichern
                                                               
                                                                 - mit gClipPath() als Clippingbereich festlegen


gClearPath( [path.i]                                         - ohne argument: leert den aktuellen Path, der von gDrawingMode(#PB_2DDrawing_Path) verwendet wird
                                                               mit  argument: leert den angegebenen Path

gGetPath()                                                   - gibt den internen, aktuellen Path von gDrawingMode(#PB_2DDrawing_Path) zur
                                                               Zwischenspeicherung zurück.

gFreePath( path.i )                                          - gibt den angegebenen Path wieder frei (löscht ihn).
                                                               Nicht frei gegebene Paths werden automatisch am Ende bei gEnd() gelöscht.

gClosePath( [path.i] )                                       - schließt die Figur, die in den Path gezeichnet wurde.

gDrawPath( [path.i] )                                        - zeichnet die Figur, die in den Path gezeichnet wurde.
                                                               ohne argument wird der aktuelle Path von gDrawingMode(#PB_2DDrawing_Path) gezeichnet.
                                                               mit  argument wird der entsprechende Path gezeichnet.
                                                               
                                                               der Path wird je nach gDrawingMode() gefüllt oder umrandet gezeichnet:
                                                               - #PB_2DDrawing_Default  füllt    den Path mit dem aktuellen Zeichenstift
                                                               - #PB_2DDrawing_Outlined umrandet den Path mit dem aktuellen Zeichenstift



Folgende Zeichenbefehle, die in einen Path gezeichnet werden, werden automatisch
miteinander verbunden:
    - gPlot() (ein Punkt)
    - gLine() / gLineXY()
    - gArc()  / gArcXY()
    - gBezier()
    - gCurve()

Also alle Zeichenbefehle, die keine geschlossene Form ergeben.
Zeichne ich als 5 Punkte in einen Path, werden diese Punkte
automatisch mit Linie verbunden.
Um den letzten Punkt mit dem ersten zu verbinden, und dadurch
eine geschlossene Form zu erstellen, verwendet man gClosePath().





Beispiel11.pb - zeigt gDrawClippedImage()
Beispiel12.pb - zeigt gRoundBox() neben PB's RoundBox()
Beispiel13.pb - zeigt einfaches gClipBox()
Beispiel14.pb - zeigt gClipBox() mit dem Flag #CombineModeUnion
Beispiel15.pb - zeigt gDrawingMode(#PB_2DDrawing_Path)
Beispiel17.pb - zeigt erweitertes Clipping mit gDrawingMode(#PB_2DDrawing_Path)
Beispiel18.pb - zeigt gDrawingMode(#PB_2DDrawing_Path) mit Text
