Beschreibung der Klassen für Non-VCL-Canvas

In diesem Dokument werden folgende Klassen beschrieben:

Name   Kurzbeschreibung
TNVCanvas wichtig Non-Vcl-Entsprechung zu TCanvas (Zeichenfunktionen)
TNVPen wichtig Non-Vcl-Entsprechung zu TPen (Eigenschaften vom aktuellen Stift)
TNVBrush wichtig Non-Vcl-Entsprechung zu TBrush (Eigenschaften vom aktuellen Brush)
TNVFont wichtig Non-Vcl-Entsprechung zu TFont (Eigenschaften vom aktuellen Font)
TNVGraphicObject unwichtig Klasse die Ereignisse für Änderungen zur Verfügung stellt.
TNVRessourceManager intern Ressourcen Manager, der über Hashing Windows Handles verwaltet.
TNVHashClass intern Klasse zum Hashen. (Basisklasse von TNVResMan)

TNVCanvas (in der Unit NVCanvas.pas) (Hierachie: TObject)

Diese Klasse entspricht im wesentlichen der Klasse TCanvas von Delphi, ist allerdings etwas schneller und besitzt mehr Funktionen. Allerdings dürfte TCanvas stabiler sein, da es intensiver getestet wurde.
Da TNVCanvas im wesentlichen ein Wrapper für GDI (Graphics Device Interface, hat nichts mit der GDI aus C&C zu tun :-), ist diese Text teilweise eine Übersetztung aus dem PSDK.

Methoden

procedure Arc(const X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);
procedure ArcTo(const X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

Mit Arc wird mit dem aktuellen Stift ein Kreisbogen gezeichnet, der auf der Peripherie der durch (X1,Y1) (X2,Y2) definierten Ellipse liegt.
Die Zeichnung verläuft gegen den Uhrzeigersinn und folgt vom Anfangs- bis zum Endpunkt der Peripherie der Ellipse. Der Anfangspunkt wird durch den Schnittpunkt der Ellipse mit einer Linie definiert, die durch den Mittelpunkt der Ellipse und durch den Punkt (X3,Y3) führt. Der Endpunkt wird durch den Schnittpunkt der Ellipse mit einer Linie definiert, die durch den Mittelpunkt der Ellipse und durch den Punkt (X4,Y4) führt. ArcTo verhält sich genauso, setzt aber zusätzlich die Stiftposition
Unter W95 dürfen die Summen X1 + X2, Y1 + Y2 und X1 + X2 + Y1 + Y2 nicht größer als 32768 sein.

procedure Chord(const X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

Mit Chord können Sie einen Umriß erzeugen, der von einem Bogen und einer Linie gebildet wird, die die Endpunkte des Bogens miteinander verbindet. Der Umriß besteht aus dem Teil einer Ellipse, die durch die Koordinaten (X1,Y1) und (X2,Y2) definiert ist. Die Ellipse wird durch eine Line geteilt, die durch die Punkte (X3,Y3) und (X4,Y4) verläuft.
Die Peripherie des Umrisses verläuft gegen den Uhrzeigersinn vom Punkt (X3,Y3) entlang der Ellipse nach (X4,Y4) und als gerade Linie zurück zu (X3,Y3). Wenn die Punkte (X3,Y3) und (X4,Y4) nicht auf der Oberfläche der Ellipse liegen, ergeben sich die Ecken des Umrisses aus den nächstliegenden Schnittpunkten der Peripherie und der Linie. Der Umriß wird mit dem aktuellen Stift gezeichnet und mit dem aktuellen Pinsel gefüllt.

Unter W95 dürfen die Summen X1 + X2, Y1 + Y2 und X1 + X2 + Y1 + Y2 nicht größer als 32768 sein.

procedure Circel(const X, Y, RadiusMul2: integer);

Zeichnet einen Kreis um den Punkt (X,Y) mit dem Radius Radius.

procedure CopyRect(const dest:TRect;const sourcedc:HDC;const source:TRect;const mode:DWORD);

Kopiert ein Rechteck aus dem angegebenen Rechteck source in der DC sourcedc, in das mit dest angegeben Recteck Die Eigenschaften right, bottom der Rechtecke geben die Höhe bzw. Breite an.
Mode kann folgende Wert annehmen:

Name in windows.pas Beschreibung
BLACKNESS Füllt das Zielrechteck mit der Farbe, die in der physikalischen Palette den Index 0 hat. (Normalerweise ist dies schwarz)
CAPTUREBLT Windows 98/Me, Windows 2000 oder höher: Bezieht jedes Fenster über dem angegebenen mit ein, normalerweise wird nur das angegeben berücksichtigt.
DSTINVERT Invertiert das Zielrechteck
MERGECOPY Mischt die Farben im source Rechteck unter Verwendung von dem AND Operator mit der aktuellen Hintergrundfarbe vom Ziel
MERGEPAINT Mischt die invertierten Farben im source Rechteck unter Verwendung von dem OR Operator mit den Farben im dest Rechteck
NOMIRRORBITMAP Windows 98/Me, Windows 2000 oder höher: Verhindert das spiegeln
NOTSRCCOPY Kopiert das invertierte Quellrechteck ins Ziel
NOTSRCERASE Mischt die Farben vom Quell- und Zielrechteck unter Verwendung von NOR
PATCOPY Füllt das Zielrechteck mit der Hintergrundfarbe
PATINVERT Mischt die Farben vom Zielrechteck unter Verwendung von XOR mit der Hintergrundfarbe vom Ziel
PATPAINT Kombiniert die Hintergrundfarbe im Ziel unter Verwendung des OR-Operators mit den invertierten Farben im Source-Rechteck. Anschließend werden die Ergebnis Farben unter verwendung von OR mit den Farben im Zielrechteck verknüpft
SRCAND Die Farben im Quell- und Zielrechteck werden unter Verwendung von AND verknüpft.
Hiermit und SRCINVERT (sehe da<-) kann Transparents erzeugt werden.
SRCCOPY Das Quellrechteck wird in das Zielrechteck kopiert.
SRCERASE Die Farben im Quellrechteck werden mit den invertiertem Farbe im Zielrechteck unter Verwendung von AND verknüpft.
SRCINVERT Die Farben im Quell- und Zielrechteck werden unter Verwendung von XOR verknüpft.
Hiermit und SRCAND kann Transparents erzeugt werden, indem zuerst mit AND eine Maske auf das Ziel kopiert wird, indem alle Pixel, die Überschrieben werden sollen schwarz sind, und alle die unverändert bleiben sollen weiß. Dadurch werden alle zu überschreibenden schwarz.
Mit SRCINVERT kann danach dass Bild drauf kopiert werden, bei dem alle zu erhaltenden Pixel schwarz sein müssen. Da eine XOR-Verknüpfung bei schwarzen Zielpixel, die Quellpixel übernimmt, bzw. umgekehrt, wird das neue Bild in die von der Maske geschwärzten Bereiche kopiert, und das alte durch die im neuen Bild geschwärzten Brereiche erhalten.
SRCPAINT Die Farben im Quell- und Zielrechteck werden unter Verwendung von OR verknüpft
WHITENESS Füllt das Zielrechteck mit der Farbe, die in der physikalischen Palette den Index 1 hat. (Normalerweise ist dies weiß)

procedure DrawFocusRect(const Rect: TRect);

Diese Methode zeichnet ein gestricheltes Recteck, das angibt, dass sich dort aktuell der Focus befindet. Da diese Methode mit dem XOR Operator arbeitet, löscht ein zweiter Aufruf das Rechteck. Mit einem so gezeichneten Rechteck kann kein Bildlauf duchgeführt werden (was auch immer das bedeutet mag, wenn du es weist, kannst du es mir ja schreiben).
Unter Whistler können die Rahmen auch mehrere Pixel breit/hoch sein, dies kann über SystemParametersInfo (und den Parameter SPI_SETFOCUSBORDERWIDTH, SPI_SETFOCUSBORDERHEIGHT, SPI_GETFOCUSBORDERWIDTH und SPI_GETFOCUSBORDERHEIGHT) festgelegt, oder festgestellt werden.

procedure DrawText(const str:string;const lpRect:TRect;const uFormat:UINT);

Zeichnet einen Text in dass mit lpRect angegebene Rechteck. Der aktuelle Font kann über die Eigenschaft Font festgelegt werden.
Um unnötige Speicherkopierungen zu vermeiden und den Aufruf zu vereinfachen, wurde lpRect als const deklariert, korrekt wäre aber var, dann wären aber keine Funktionsrückgaben übergebbar, zur Sicherheit, sollte der Parameter immer in einer Variable liegen, tut er es aber nicht, passiert gewöhnlich, mit einer Ausnahme, trotztdem nichts. Bei uFormat können folgende Parameter OR verknüpft werden:

Wert Beschreibung
DT_BOTTOM Richtet den Text an der Unterseite des Rechteckes aus. (Funktioniert nur, wenn DT_SINGLELINE gesetzt ist)
DT_CALCRECT Berechnet die Höhe und Breite des ideal Rechteckes.Wenn mehrere Zeilen übergeben wurden, wird die Breite des Rechteckes benutzt, um den Text umzubrechen. Wurde nur eine übergeben, wird die Breite so gesetzt, dass das letzte Zeichen reinpasst. In beiden Fällen wird die Höhe gesetzt und der Text nicht ausgegeben.
Dieser Parameter ist die vorhin erwähnte Ausnahme, da das Rechteck verändert wird, dass heißt, dass in diesem Fall eine Variable übergeben werden muss, oder das Programm stürzt ab.
DT_CENTER Zentriert den Text im Rechteck
DT_EDITCONTROL Die Grafikausgabe verhält sich wie ein Memofeld. Das bedeutet, die durchschnittliche Breite wird wie dort berechnet, und eine teilweise sichtbare Line nicht angezeigt.
DT_END_ELLIPSIS Wenn der das Ende des angezeigten Textes nicht in das Rechteck passt, wird er elliptisch abgetrennt. Ist das Wort nicht am Ende, wird es aber nicht elliptisch abgebrochen.

Wenn das DT_MODIFYSTRING Flag nicht gesetzt ist, wird der String nicht verändert.

Siehe auch DT_PATH_ELLIPSIS und DT_WORD_ELLIPSIS.

DT_EXPANDTABS Vergrößert Tab Zeichen. Standardmäßig werden 8 Zeichen eingesetzt. Dieses Flag schließt DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS, und DT_END_ELLIPSIS aus.
DT_EXTERNALLEADING Vergrößert die Zeilenhöhe so, dass aus Zeilen raus reichenden Buchstabenecken (wie der Bogen bei "g") mit einberechnet werden. Dies ist normalerweise nicht der Fall.
DT_HIDEPREFIX Windows 2000 oder höher: Ignoriert das Ampersand (Zeichen &) Prefix Zeichen im Text. Der folgende Buchstabe wird nicht unterstrichen, aber andere Prefixzeichen werden noch verarbeitet:
Eingabe:         "A&bc&&d"
Normal:          "Abc&d"
DT_HIDEPREFIX:   "Abc&d"

Siehe auch DT_NOPREFIX und DT_PREFIXONLY.

DT_INTERNAL Benutzt den Standardfont um die Textgröße zu berechnen
DT_LEFT Richtet den Text nach links aus.
DT_MODIFYSTRING Verändert den Text, um ihn ihn dem angezeigten anzuzeigen. Wenn nicht DT_END_ELLIPSIS oder DT_PATH_ELLIPSIS gesetzt ist, wird dieses Flag ignoriert.
DT_NOCLIP Zeichnet ohne den Text abzuschneiden. DrawText ist dann ein bisschen schneller.
DT_NOFULLWIDTHCHARBREAK Windows 98/Me, Windows 2000 or later: Verhindert einen Zeilenumbruch an einem DBCS (double-wide character string), so dass die Zeilenumbruchsregel wie bei SBCS Strings ist. Dies kann zum Beispiel in koreanischen Fenstern benutzt werden um die Iconlabels besser lesen zu können. Wenn DT_WORDBREAK nicht gesetzt wird, wird es ignotiert
DT_NOPREFIX Schaltet die Verarbeitung von Prefix zeichen aus. Normallerweise, DrawText interpretiert das Symbolzeichen & als Befehl das nächste Zeichen zu unterstreichen, und das Zeichen && als Befehl ein & anzuzeigen. DT_NOPREFIX schaltet dies ab:
Eingabe:        "A&bc&&d"
Normal:         "Abc&d"
DT_NOPREFIX:    "A&bc&&d"

Siehe auch DT_HIDEPREFIX und DT_PREFIXONLY.

DT_PATH_ELLIPSIS Schneidet den dargestellten Text in der Mitte ellipsenförmig ab, so dass er in das Rechteck passt. Enthält der String Backslashs (\), DT_PATH_ELLIPSIS versucht soviel wie möglich vom Text hinter dem letzten Backslash zu erhalten.

Wenn DT_MODIFYSTRING nicht gesetzt ist, wird der Text nicht verändert

Siehe auch DT_END_ELLIPSIS und DT_WORD_ELLIPSIS.

DT_PREFIXONLY Windows 2000 oder höher: Zeichnet nur einen Unterstrich an der Position, wo ein Zeichen von einem & gefolgt wird und nichts anderes:
Eingabe:         "A&bc&&d"
Normal:          "Abc&d"
DT_PREFIXONLY:   " _   "

Siehe auch DT_HIDEPREFIX und DT_NOPREFIX.

DT_RIGHT Richtet den Text rechtsbündig aus
DT_RTLREADING Setzt den Text in Leserichtung von rechts nach links, wenn der aktuelle Font Hebräisch oder Arabisch ist. Der Standardmodus ist links nach rechts.
DT_SINGLELINE Zeichnet den Text als eine einzige Linie, Zeilen umbrüche werden nicht berechnet.
DT_TABSTOP Setzt die Tabstops. Die Bits 15 bis 8 (höchstes Byte des niedrigsten Words) von uFormat bestimmt die Anzahl Leerzeichen pro Tabstop. Der Standardwert ist 8. Die Flags DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, und DT_NOPREFIX können mit diesem nicht genutzt werden.
DT_TOP Richtet den Text an der Oberkante des Rechteckes aus.
DT_VCENTER Zentriert den Text vertikal. Das geht nur wenn DT_SINGLELINE gesetzt ist.
DT_WORDBREAK Bricht Worte um. Die Zeilen werden automatisch umgebrochen, wenn ein Wort außerhalb des Rechteckes kommen würde.
DT_WORD_ELLIPSIS Schneidet die Worte, die nicht in das Rechteck passen ellipsenförmig um.

Siehe auch DT_END_ELLIPSIS und DT_PATH_ELLIPSIS.

procedure DrawTextEx(const str:string;const lpRect:TRect;const uFormat:UINT;lpDTParams:TDrawTextParams);

Wie DrawText, nimmt aber zusätzlich noch einen Parameter vom Typ TDrawTextParams an. Dieser Record enthält folgende Felder:

Name Beschreibung
cbSize Länge der Struktur, wird automatisch gesetzt
iTabLength Länge eine Tabstopes
iLeftMargin Linker Seitenrand in durschnittlichenZeichenbreiten
iRightMargin Rechter Seitenrand in durschnittlichenZeichenbreiten
uiLengthDrawn Gibt die Länge des angezeigten Textes zurück. (entweder die Tetxlänge, oder den Index der letzten rausgefallenen Textzeile, laut PSDK)

procedure Ellipse(const X1, Y1, X2, Y2: integer);

Zeichnet eine Ellipse in ein Rechteck, das am Punkt (X1, Y1) beginnt und bis zum Punkt (X2, Y2) geht.
Unter W95 dürfen die Summen X1 + X2, Y1 + Y2 und X1 + X2 + Y1 + Y2 nicht größer als 32768 sein.procedure PolyBezier(const Points: array of TPoint);procedure FillRect(const Rect: TRect);

Füllt das angebene Rechteck.

procedure FloodFill(const X, Y: Integer; const Color: ColorRef; const FillTyp: integer);

Füllt den Bereich um den Punkt (X,Y) mit der aktuellen Hintergrundfarbe(wird über brush gesetzt). Wie der Bereich definiert ist, wird vonn FillTyp festgelegt.

Value Meaning
FLOODFILLBORDER Der zu füllende Bereich ist umgegrenzt, mit der in Color angegeben Farbe.
FLOODFILLSURFACE Der zu füllende Bereich ist der gesamte Bereich, der die Farbe Color hat.

procedure FrameRect(const Rect: TRect);

Zeichnet einen Rahmen, dessen Aussehen vom aktuellen Stift festgelegt wird, um das in rect angebene Rechteck.

procedure LineTo(const X, Y: Integer);

Verschiebt den Zeichenstift, an den Punkt (X,Y)

procedure MoveTo(const X, Y: Integer);

Verschiebt den Zeichenstift, an den Punkt (X,Y), und zeichnet dabei eine Linie

procedure Pie(const X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint);

Diese Methode zeichnet einen Torten ähnlichen Umriß. Der Umriß wird aus der, in dem durch die Punkte (X1, Y1) und (X2, Y2) definiertem Recteck, befindlichen Ellipse ausgeschnitten. Begrenzt wird es durch zwei Linien, die durch den Mittelpunkt und die Punkte (X3, Y3) und (X4, Y4) gehen.
Unter W95 dürfen die Summen X1 + X2, Y1 + Y2 und X1 + X2 + Y1 + Y2 nicht größer als 32768 sein.

procedure PolyBezier(const Points: array of TPoint);
procedure PolyBezierTo(const Points: array of TPoint);

Zeichnet mit dem aktuellen Stift kubische Bezierkurven, deren Punkte mit dem Array Points festgelegt werden. Die erste Kurve wird vom ersten Punkt zum vierten gezeichnet, wobei die Punkte 2 und 3 Steuerpunkte darstellen. Für die nächsten Kurven sind dann immer drei Punkte zuständig, zwei Steuerpunkte und ein Endpunkt, wobei als Startpunkt der Endpunkt der vorherigen Kurve genommen wird.

procedure PolyDraw(const Points:array of TPoint;const Types:array of byte);

Zeichnet mehrere Liniensegmente und Bezierkurven.
Mit dem Points-Array werden die jeweiligen Punkt festgelegt, die Art der Punkte wird über Types festgelegt. Für jedem Punkt muss es einen Eintrag im Types-Array mit dem selben Index geben. Ein Types-Eintrag kann dabei eine der folgenden Konstanten enthalten:

Type Meaning
PT_MOVETO Verschiebt den Zeichenstift zum jeweiligen Punkt
PT_LINETO Zeichnet eine Line von der aktuellen Zeichenstiftposition zum jeweiligen Punkt, und verschiebt die Position.
PT_BEZIERTO Gibt an, dass der Punkt zu einer Bezierkurve gehört.

PT_BEZIERTO Typen treten immer in dreier Gruppen auf. Die aktuelle Zeichenposition gibt den Startpunkt an, die ersten beiden PT_BEZIERTO Punkte legen die Steuerpunkte fest und der dritte Punkt gibt den Endpunkt an.

Zu PT_LINETO oder PT_BEZIERTO kann der Parameter PT_CLOSEFIGURE angegeben werden, der bewirkt, das die Figur automatisch geschlossen wird.

procedure Polygon(const Points: array of TPoint);

Zeichnet ein Polygon, das von den im Array Points angegebenen Punkten umschlossen wird. Die Randlinien werden mit dem aktuellen Stift gezeichnet, und die Innenfläche mit dem aktuellen Hintergrund gefüllt.

procedure Polyline(const Points: array of TPoint);

Zeichnet ein Polygon, das von den im Array Points angegebenen Punkten umschlossen wird, ohne es zu füllen. Die Randlinien werden mit dem aktuellen Stift gezeichnet.

procedure Rectangle(const x1,y1,x2,y2:integer);

Zeichnet und füllt ein Rechteck, dessen obere linke Ecke der Punkt (x1,y1) ist und die untere rechte Ecke der Punkt (x2,y2) ist.

procedure RoundRect(const X1, Y1, X2, Y2, X3, Y3: Integer);

Zeichnet und füllt ein rundes Rechteck, dessen obere linke Ecke der Punkt (x1,y1) ist und die untere rechte Ecke der Punkt (x2,y2) ist. Die Parameter X3 und Y3 geben die Größe der Ellipse an, mit der die Ecken des Rechteckes gerundet werden.

function TextExtent(const Text: string): TSize;

Liefert die Höhe und Breite des angebenen Strings zurück.

procedure TextOut(const X, Y: Integer; const Text: string);

Zeichnet an den Punkt (X,Y) den angebenen Text. Die Textfarbe ist die aktuelle Stiftfarbe.

procedure TextRect(const Rect: TRect; const X, Y: Integer; const Text: string);

Zeichnet an den Punkt (X,Y) den angebenen Text, begrenzt aber die Ausgabe aufs angebenen Rechteck. Die Textfarbe ist die aktuelle Stiftfarbe.

function TextHeight(const Text: string): Integer;

Liefert die Höhe des angebenen Strings zurück.

function TextWidth(const Text: string): Integer;

Liefert die Breite des angebenen Strings zurück.

Eigenschaften

property Handle:HDC read F_Handle write SetHandle;

Gibt den Device Context an, mit dem der Canvas momentan verknüpft ist.

property PenPos:TPoint read GetPenPos write SetPenPos;

Gibt die Position des Zeichenstiftes an. Ein setzten hat die gleiche Wirkung wie ein Aufruf von MoveTo.

property BackgroundTransparent:boolean read BgTransparent write SetBgTransparent;

Gibt an, ob bei Textausgabe, der Hintergrund überschrieben werden soll.

property Brush:TNVBrush read F_Brush write SetBrush;

Gibt den Hintergrundpinsel an.

property pen:TNVpen read F_pen write Setpen;

Gibt den aktuellen Stift an und, anders als bei GDI, auch die Textfarbe.

property Font:TNVFont read F_Font write SetFont;

Legt den aktuellen Font fest.

TNVPen (in der Unit NVCanvas.pas) (Hierachie: TNVGraphicObject->TObject)

Eine Klasse die das Aussehen des aktuellen Zeichenstiftes steuert.

Methoden

procedure Assign(newPen:TNVPen);

Übernimmt sämtliche Eigenschaften des übergebenden Stiftes. Dabei wird auch das Handle des Stiftes übernommen, und der Referenzcounter im Ressourcenmanager für das Handle um eins erhöht.

Eigenschaften

property Style:INT read GetStyle write SetStyle;

Gibt das Aussehen des Stiftes an. Der Wert kann einer der folgenden Konstanten sein:

Value Meaning
PS_SOLID Der Stift ist durchgehend.
PS_DASH Der Stift ist gestrichelt. Funktioniert leider nur, wenn die Breite 1 ist.
PS_DOT Der Stift ist gepunktet. Funktioniert ebenfalls nur, wenn die Breite 1 ist.
PS_DASHDOT Der Stift ist abwechselnd gepunktet und gestrichelt. Funktioniert nur, wenn die Breite 1 ist.
PS_DASHDOTDOT Der Stift hat abwechselnd einen Strich und zwei Punkte. Funktioniert nur, wenn die Breite 1 ist.
PS_NULL Der Stift ist unsichtbar.
PS_INSIDEFRAME Der Stift ist durchgehend. Wenn diese Stift mit einer Funktion verwendet wird, die Umgebungsrechtecke unterstützt, wird dies Figur geschrumpft, so dass sie in das Rechteck passt.

property Width:int read GetWidth write SetWidth;

Gibt die Breite des Stiftes an.

property Color:COLORREF read GetColor write SetColor;

Gibt die Farbe des Stiftes an.

property Handle:HPen read F_handle;

Liefert ein Handle auf einen Windows Pen (eng. Stift) zurück. Bei jeder Änderung einer Eigenschaft wird dieses Handle neuerzeugt.

TNVBrush (in der Unit NVCanvas.pas) (Hierachie: TNVGraphicObject->TObject)

Eine Klasse die das Aussehen des aktuellen "Füllpinsels" steuert.

Methoden

procedure Assign(newBrush:TNVBrush);

Übernimmt sämtliche Eigenschaften des übergebenden Pinsels. Dabei wird auch das Handle des Stiftes übernommen, und der Referenzcounter im Ressourcenmanager für das Handle um eins erhöht.

Eigenschaften

property Style:UINT read GetStyle write SetStyle;

Gibt das Aussehen des Pinsels an, kann eine der Konstanten sein:

Value Meaning
BS_DIBPATTERN Der Pinsel füllt mit einem DIB (Gerät unabhängiges Bitmap), ein Handle zum Bild wird in der Hatch-Eigenschaft angegeben.

Windows 95: Wenn das Bild größer als 8 x 8 ist, wird es abgeschnitten.

BS_DIBPATTERN8X8 Wie BS_DIBPATTERN
BS_DIBPATTERNPT Der Pinsel füllt mit einem DIB (Gerät unabhängiges Bitmap), ein Pointer zum Bild wird in der Hatch-Eigenschaft angegeben.
BS_HATCHED Gemusterter Pinsel
BS_HOLLOW Unsichtbarer Pinsel
BS_NULL Wie BS_HOLLOW.
BS_PATTERN Der Pinsel füllt mit einem Memory Bitmap.
BS_PATTERN8X8 Wie BS_PATTERN.
BS_SOLID Durchgehender Pinsel

property Color:COLORREF read GetColor write SetColor;

Wenn Style den Wert BS_SOLID, oder BS_HATCHED hat, gibt diese Eigenschaft die Farbe des Pinsels an.

Wenn Style den Wert BS_DIBPATTERN oder BS_DIBPATTERNNPT hat, muss Color eine der beiden Konstanten sein:

Value Meaning
DIB_PAL_COLORS Die Farbtabelle enthält ein Array von 16 Bit Indexen zur aktuellen logischen Palette.
DIB_RGB_COLORS Die Farbtabelle enthält echte RGB Werte.

property Hatch:long read GetHatch write SetHatch;

Spezifiziert das Muster. Je nach Wert der Style-Eigenschaft, hat dieser Wert eine andere Bedeutung:

Wenn Style BS_DIBPATTERN ist, enthält Hatch ein Handle auf ein gepacktes DIB. (wird durch GlobalAlloc erzeugt)

Wenn Style BS_DIBPATTERNPT ist, enthält Hatch einen Pointer auf ein gepacktes DIB (wird durch LocalAlloc erzeugt)

Wenn Style BS_PATTER ist, enthält Hatch ein Handle auf ein Bitmap

Wenn Style BS_HATCHED ist, kann Hatch eine der folgenden Konstanten sein:

Value Meaning
HS_BDIAGONAL Um 45° nach oben geboge Linien.
HS_CROSS Sich überschneidende Horizontale und vertikale Linien
HS_DIAGCROSS Sich überschneidende, um 45° gedrehte Linien
HS_FDIAGONAL Um 45° nach unten geboge Linien.
HS_HORIZONTAL Horizontale Linien
HS_VERTICAL Vertikale Linien

property Handle:Hbrush read F_handle;

Handle zu einem Windows Brush.

TNVFont (in der Unit NVCanvas.pas) (Hierachie: TNVGraphicObject->TObject)

Methoden

procedure Assign(newFont:TNVFont);

Übernimmt sämtliche Eigenschaften des übergebenden Fontes. Dabei wird auch das Handle des Stiftes übernommen, und der Referenzcounter im Ressourcenmanager für das Handle um eins erhöht.

Eigenschaften

property height:long read GetHeight write SetHeight;

Gibt die Höhe der Buchstaben im zu erstellendem Fonts in logischen Einheiten an.
Wenn der Wert >0 ist, wird der Wert an die Zellenhöhe der verfügbaren Fonts angepasst.
Wenn er 0 ist, wird die Standardhöhe benutzt.
Wenn er <0 ist, wird der Wert an die Buchstabenhöhe angepasst.

property Width:long read GetWidth write SetWidth;

Bestimmt die Buchstabenbreite.
Wenn der Wert 0 ist, wird die Standardbreite genommen.

property Angle:long read GetAngle write SetAngle;

Legt den Drehwinkel in Grad fest.

property Weight:long read GetWeight write SetWeight;

Legt den Fettgrad im Bereich von 0 bis 1000 fest. Z. B.: 400 ist normal und 700 ist fett.

property Style:TNVFontStyle read GetStyle write SetStyle;

In diesem Set können folgende Werte verwendet werden:

Name Beschreibung
nvfsItalic Kursiv
nvfsStrikeOut Durchgestrichen
nvfsUnderline Unterstrichen

property CharSet:byte read GetCharSet write SetCharSet;

Legt die Zeichengruppe fest. Es gibt folgende Werte:

ANSI_CHARSET
BALTIC_CHARSET
CHINESEBIG5_CHARSET
DEFAULT_CHARSET
EASTEUROPE_CHARSET
GB2312_CHARSET
GREEK_CHARSET
HANGUL_CHARSET
MAC_CHARSET
OEM_CHARSET
RUSSIAN_CHARSET
SHIFTJIS_CHARSET
SYMBOL_CHARSET
TURKISH_CHARSET

property OutPrecision:byte read GetOutPrecision write SetOutPrecision;

Legt die Ausgabegenauigkeit fest:

Wert Beschreibung
OUT_CHARACTER_PRECIS Nicht benutzt
OUT_DEFAULT_PRECIS Es soll die Standardgenauigkeit benutzt werden.
OUT_DEVICE_PRECIS Der Font Mapper soll einen Device Font nehmen, wenn es mehrere Fonts mit dem selben Namen gibt,
OUT_OUTLINE_PRECIS Windows NT/2000 oder höher: Der Font Mapper soll True Type oder andere Kontur Fonts nehmen
OUT_RASTER_PRECIS Der Font Mapper soll einen Raster (Pixel) Font nehmen, wenn mehrere Fonts mit dem selben Namen vorhanden sind.
OUT_STRING_PRECIS Dieser Wert wird nicht für den Font Mapper verwendet, sondern wird zurückgegeben, wenn Raster Fonts enumeriert wurden.
OUT_STROKE_PRECIS Windows NT/2000 oder höher: Dieser Wert wird nicht vom Font Mapper verwendet, sondern zurückgegeben, wenn True Type, Konturfonts, oder Vektorfonts enumeriert wurden.

Windows 95/98/Me: Der Wert wird bei Kartenvektorfonts benutzt, und wird zurückgegeben, wenn True Type, oder Vektorfonts enumeriert wurden.

OUT_TT_ONLY_PRECIS Der Fontmapper soll nur True Type Fonts nehmen, und wenn es keinen mit dem angegebenen Namen gibt, soll er den Standardfont nehmen.
OUT_TT_PRECIS Der Font Mapper soll True Type Fonts nehmen, wenn es mehrere mit dem selben Namen gibt.

property ClipPrecision:byte read GetClipPrecision write SetClipPrecision;

Bestimmt die Clipgenauigkeit:

Name Beschreibung
CLIP_DEFAULT_PRECIS Es soll die Standardgenauigkeit genommen werden
CLIP_CHARACTER_PRECIS Unbenutzt
CLIP_STROKE_PRECIS Nicht vom Font Mapper benutzt, sondern wird zurückgegeben wenn Rasterfonts, True Type Fonts, oder Vektorfonts enumeriert wurden.

Windows NT/2000 oder höher: Aus Kompatibilitätsgründen, wird es immer zurückgegeben

CLIP_MASK Unbenutzt
CLIP_EMBEDDED Dieses Flag muss bei eingebetten Nur-Lese Fonts gesetzt sein
CLIP_LH_ANGLES Gibt an, ob die Rotation von der Systemrotationsrichtung abhängt.

Wenn es nicht gesetzt ist, werden Device Fonbts immer gegen den Urzeiger gedreht, aber die Rotation anderer Fonts hängt vomn System ab.

CLIP_TT_ALWAYS Unbenutzt

property Quality:byte read GetQuality write SetQuality;

Legt die Ausgabequalität fest:

Wert Beschreibung
ANTIALIASED_QUALITY Windows NT 4.0 und höher: Der Font wird antialiased, oder geglättet, dargestellt, wenn der Font es unterstützt, und es nicht zu klein oder groß ist.

Windows 95 with Plus! und höher: Wie bei NT, aber der Bildschirm muss mehr als eine 8-Bit Farbtiefe haben, es muss ein flaches Devices sein und darf nicht zu mehreren Bildschirmen gehören.

CLEARTYPE_QUALITY Whistler: Wenn es möglich ist, wird der Text mit Cleartype gerendert
DEFAULT_QUALITY Das Aussehen ist unwichtig
DRAFT_QUALITY Das Aussehen ist nicht so wichtig wie bei PROOF_QUALITY. GDI Raster Fonts werden skaliert (dadurch stehen mehr Größen zur Verfügung, aber die Qualität sinkt). Fette, kursive, unterstrichene oder durchgestrichene Fonts werden simuliert, wenn es nötig ist.
NONANTIALIASED_QUALITY Windows 95 mit Plus!, Windows 98, Windows NT 4.0, und Windows 2000 oder höher: Der Font wird niemals geglättet.
PROOF_QUALITY Die Qualität ist wichtiger, als die genaue Umsetztung. GDI Raster Fonts werden nicht skaliert (dadurch stehen weniger Größen zur Verfügung, aber die Qualität steigt). Fette, kursive, unterstrichene oder durchgestrichene Fonts werden simuliert, wenn es nötig ist.

property PitchAndFamily:byte read GetPitchAndFamily write SetPitchAndFamily;

Die beiden niedrigen Bits legen die Zeichenhöhe fest und können eines der Konstanten sein:

Die vier höchstwertigesten Bits legen die Familie fest:

Wert Beschreibung
FF_DECORATIVE Seltsame Fonts. Z. B.: Altes Englisch (vielleicht auch altes Deutsch)
FF_DONTCARE Familie egal
FF_MODERN Fonts mit fester Zeichenbreite, mit oder ohne Serifen, z.B.: Pica, Elite, und Courier New
FF_ROMAN Fonts mit unterschiedlicher Zeichenbreite und mit Serifen, z.B.: MS Serif
FF_SCRIPT Fonts die aussehen wie Handschrift, z.B.: Script und Cursive
FF_SWISS Fonts mit unterschiedlicher Zeichenbreite und ohne Serifen, z.B.: MS Sans Serif

property FaceName:TString32 read GetFaceName write SetFaceName;

Name des Fonts

property Color:COLORREF read F_color write SetColor;

Farbe des Fontes

property Handle:HFONT read F_handle;

Window Handle des Fontes

TNVGraphicObject (in der Unit NVCanvas.pas) (Hierachie: TObject)

Klasse die zwei Ereignisse OnChange und OnChanging zur Verfügung stellt. Sie wird von TNVCanvas benutzt, und ist die Basisklasse für TNVPen, TNVBrush und TNVFont.

TNVRessourceManager (in der Unit NVResMan.pas) (Hierachie: TNVHashClass->TObject)

Ein Ressourcenmanager, der Windows Handles verwaltet.

Ereignisse

OnDelete:TResDeleteProc;

Wird aufgerufen, wenn eine Ressource freigeben werden soll.

Methoden

procedure DeleteRes(const id:THandle);

Verringert den internen Referenz Zähler für das Handle, und ruft OnDelete auf, wenn keine Kopien mehr vorhanden sind

procedure GetRes(const id:THandle);

Erhöht den internen Referenz Zähler

TNVHashClass (in der Unit NVHashClass.pas) (Hierachie: TObject)

Dient zum Hashen von 32-Bit Werten für 32-Bit Ids, und stellt somit in etwa eine immer sortierte Liste da.

Ereignisse

OnGetHash:THashProc;

Wird aufgerufen, um einen Hashwert zu generieren.

Methoden

function GetHashRec(const id:cardinal):PNVHashRec;

Liefert die Daten für eine bestimmte ID.

procedure DeleteHashRec(const id:cardinal);

Löscht einen Hashwert für eine bestimmte ID.

function InsertHashRec(const id,wert:cardinal):PNVHashRec;

Fügt einen bestimmten Wert für eine ID ein.

 

 

 

Für weiter Fragen/Verbesserungsvorschläge kannst du mir ein Email-Schicken BeniBela@aol.com.