Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Schriftarten unter FreeBASIC

von RedakteurVoltaSeite 5 von 7

Schriftfarbe mit CUSTOM-Funktion ändern

Wie funktioniert das nun mit der CUSTOM-Funktion?
Für jeden Pixel den die STRING DRAW - Anweisung malt wird die Angegebene CUSTOM-Funktion aufgerufen.

Draw String (x, y), "Text", , myFont, CUSTOM, @Funktionsname, @Parameter

An den Draw String Aufruf wird nach dem Schlüsselwort CUSTOM ein Pointer auf die CUSTOM-Funktion und (optional) ein Pointer auf einen zusätzlichen Parameter (Wert) angegeben.
Der CUSTOM-Funktion werden immer 3 Werte übergeben und sie gibt einen Wert (UInteger), das ist dann die Farbe des Pixels, zürück. Die 3 Werte sind:

src As UIntegerPixelfarbe (RGBA) aus myFont (Quelle)
dest As UIntegerPixelfarbe (RGBA) des Zielpunktes
param As UInteger PtrPointer auf einen beliebigen Wert

In der Funktion kann man nun auswerten ob der (Font)Pixel Hintergrund (&hffff00ff) oder ein Pixel mit der Schriftfarbe ist. Bei Hintergrundfarbe bleibt die Pixelfarbe des Zielpunktes, bei Schriftfarbe wird der Pixel mit der in parm übergebenen Farbe gezeichnet.

Function font_color( ByVal src As UInteger, ByVal dest As UInteger, _
                     ByVal param As UInteger Ptr ) As UInteger
  Function = IIf( src = &hffff00ff, dest, *param )
End Function

Als Beispiel hier mit der Schriftfarbe rot:

...
Dim as UInteger fg = RGB(255, 0, 0)
Draw String (20, 16), "myFont: abcdefg ... UVWXYZ", , myFont, CUSTOM, @font_color, @fg

Hier eine CUSTOM-Funktion die als Schriftfarbe immer die Hintergrundfarbe des Zielbereichs invertiert. Damit sollte eine Schrift auch auf sehr bunten Hintergrund immer sichtbar sein.

Function font_invert( ByVal src As UInteger, ByVal dest As UInteger, _
                      ByVal param As Any Ptr ) As UInteger
  Function = IIf( src = &hffff00ff, dest, dest Xor &h00ffffff )
End Function

Auf einem schwarzen Hintergrund erscheint weiße Schriftfarbe, als Schrift auf einem Foto ist der Effekt am deutlichsten.

...
Draw String (20, 16), "myFont: abcdefg ... UVWXYZ", , myFont, CUSTOM, @font_invert

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  6  7  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 14.05.2008 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 07.01.2013 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen