Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Transparente Schriftfarbe ?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 27.05.2019, 00:02    Titel: Transparente Schriftfarbe ? Antworten mit Zitat

Hallo, hab nen kleines Problem: habe eine kleine grafik mit einigen kleinen ausgefüllten Rechtecken gezeichnet, sie stehen zusammen und haben verschiedenen Farben jetzt möchte ich mit schwarzer Schrift ein Wort daraufschreiben. nur leider malt die Hintergrundfarbe der Schrift mit, das sieht nicht schön aus. missbilligen
die Hintergrundfarbe kann ich nicht an die Farbe der Grafik anpassen da, zb die eine Buchstabenhälfte auf der gelben Grafik steht, und die andere Hälfte auf der grünen.
gibs bei der Schriftfarbe sowas wie transparenden Hintergrund ?
oder ähnl. Lösung ?

hier mein Problem:
https://prnt.sc/ntnun2
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 27.05.2019, 09:08    Titel: Antworten mit Zitat

hm, wenn die shrifft immer schwarz ist muesste die transparenzfarbe klappen

zb DrawString(x,y),text,&hff00ff

ansonsten koenntest du noch mit 32 bit farben rumprobieren

zb Draw String(x,y),text,rgba(0,0,0,alpha)
hier eventuel mit GFX_ALPHA_PRIMITIVES arbeiten fals dich da nix tut
oder auf die warten ;D
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4255
Wohnort: ~/

BeitragVerfasst am: 27.05.2019, 15:56    Titel: Antworten mit Zitat

Ich bin jetzt einigermaßen verwirrt - DRAW STRING arbeitet schon immer transparent, da ist eine gesonderte Angabe der Transparenzfarbe nicht erforderlich. Ich vermute mal, der erste Versuch lief über PRINT; da wird der Hintergrund in der Tat überschrieben (und das lässt sich nicht ändern).

Kleines Beispiel mit DRAW STRING:
Code:
randomize
screenres 300, 200, 32
for i as integer = 0 to 30
  ' farbige Streifen in zufälliger (heller) Farbe
  line (i*10, 0)-step(199, 200), rgb(rnd*127+127, rnd*127+127, rnd*127+127), bf
next
' (schwarze) Schrift
draw string (100, 100), "Wallo Held!", 0
sleep

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 27.05.2019, 23:44    Titel: Antworten mit Zitat

Ja hatte meine Schrift mit Print geschrieben,
DRAW STRING ist jetzt meine Lösung, danke.

hab erst seit ner Woche wieder angefangen mit FreeBasic, nach jahrelanger Pause, man lernt immer dazu. lächeln

Danke nochmal
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4255
Wohnort: ~/

BeitragVerfasst am: 29.05.2019, 16:10    Titel: Antworten mit Zitat

DRAW STRING ist eine ganz lustige Sache - zum einen kannst du damit Schrift pixelgenau positionieren, zum anderen ist auch die Verwendung eines eigenen Fonts möglich. Das ist zwar nicht ganz simpel und erfordert etwas Vorarbeit, ist aber eine nette Spielerei.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 932
Wohnort: Ruhrpott

BeitragVerfasst am: 30.05.2019, 12:48    Titel: Antworten mit Zitat

Hallo C64-Fan!

Zum Thema "eigene Fonts":

Hier zwei Funktionen zum Vergrößern des eingebauten DRAW STRING - Fonts:
Code:
Function createBigFont(firstChr As Integer, lastChr As Integer, foreground As ULong = RGB(255,255,255), background As ULong = RGB(255,0,255)) As Any Ptr
   Dim As UByte Ptr p
   Dim As Any Ptr charPtr, fontPtr, img
   Dim As Integer sc_width, sc_height, bpp, ch_width, ch_height, numberOfChr, x, y, c
   Dim As ULong pnt
   
   'character size
  ScreenInfo sc_width, sc_height,,bpp
  ch_width = sc_width / LoWord(Width)
  ch_height = sc_height / HiWord(Width)
   
  numberOfChr = lastChr - firstChr + 1

   fontPtr = ImageCreate(numberOfChr * ch_width * 2, ch_height * 2 + 1)
   p = fontPtr
   p += IIf(p[0] = 7, 32, 4)
   p[0] = 0       
   p[1] = firstChr
   p[2] = lastChr
   
   charPtr = ImageCreate(ch_width * 2, ch_height * 2, background)
   For c = firstChr To lastChr
     p[3 + c - firstChr] = ch_width * 2
     img = ImageCreate(ch_width, ch_height, background)
     Draw String img, (0,0), Chr(c), foreground
     For x = 0 To ch_width - 1
         For y = 0 To ch_height - 1
            pnt = Point(x, y, img)
            PSet charPtr, (x * 2, y * 2), pnt
            PSet charPtr, (x * 2 + 1, y * 2), pnt
            PSet charPtr, (x * 2, y * 2 + 1), pnt
            PSet charPtr, (x * 2 + 1, y * 2 + 1), pnt
         Next
     Next
     ImageDestroy img    
     Put fontPtr, ((c - firstChr) * ch_width * 2, 1), charPtr, Trans
   Next
   ImageDestroy charPtr
      
   Return fontPtr
   
End Function

Function createMidFont(firstChr As Integer, lastChr As Integer, foreground As ULong = RGB(255,255,255), background As ULong = RGB(255,0,255)) As Any Ptr
   Dim As UByte Ptr p
   Dim As Any Ptr charPtr, fontPtr, img
   Dim As Integer sc_width, sc_height, bpp, ch_width, ch_height, numberOfChr, x, y, c, _
                  remLines, remColumns
   Dim As ULong pnt
   
   'character size
   
   ScreenInfo sc_width, sc_height,,bpp
   remLines = HiWord(Width)
   remColumns = LoWord(Width)
   Width sc_width / 8, sc_height / 16
   ch_width = sc_width / LoWord(Width)
  ch_height = sc_height / HiWord(Width)
  numberOfChr = lastChr - firstChr + 1

   fontPtr = ImageCreate(numberOfChr * ch_width, ch_height + 1)
   p = fontPtr
   p += IIf(p[0] = 7, 32, 4)
   p[0] = 0       
   p[1] = firstChr
   p[2] = lastChr
   
   charPtr = ImageCreate(ch_width, ch_height, background)
   For c = firstChr To lastChr
      p[3 + c - firstChr] = ch_width
     img = ImageCreate(ch_width, ch_height, background)
     Draw String img, (0,0), Chr(c), foreground
     For x = 0 To ch_width - 1
         For y = 0 To ch_height - 1
            pnt = Point(x, y, img)
            PSet charPtr, (x, y), pnt
         Next
     Next
     ImageDestroy img    
     Put fontPtr, ((c - firstChr) * ch_width, 1), charPtr, Trans
   Next
   ImageDestroy charPtr
   Width remColumns, remLines 'restore character size
      
   Return fontPtr
   
End Function


Und so lassen sich die Windows TrueType - Fonts für DRAW STRING nutzbar machen: TrueTypeFonts für Draw String (nur Windows)

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 01.06.2019, 08:48    Titel: UTF8 support mit FreeType und DrawString Antworten mit Zitat

https://www.freebasic.net/forum/viewtopic.php?f=17&t=23090&p=203311&hilit=Freetype#p203311
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
C64-Fan



Anmeldungsdatum: 26.10.2012
Beiträge: 79

BeitragVerfasst am: 02.06.2019, 23:23    Titel: Antworten mit Zitat

mit dem verändern des Font´s werd ich noch Einarbeitung brauchen, sobald ich das brauche.

RockTheSchock danke für den Link aber bin dem englischen nicht so sehr mächtig.

Problem ist ja, Gott sei Dank, durch euch schnell gelöst worden.zwinkern

Schreib grad meine nächste Spielfortsetzung und kann sein das ich wieder mal anfrag wenn ich nicht weiterkomme.
_________________
Mitglied-Nr. 2000 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 932
Wohnort: Ruhrpott

BeitragVerfasst am: 04.06.2019, 20:18    Titel: Antworten mit Zitat

C64-Fan hat Folgendes geschrieben:
... aber bin dem englischen nicht so sehr mächtig.

Kleiner Tip: Lass ein Oline - Wörterbuch mitlaufen. Das Lesen ist am Anfang sicher etwas holperig, aber man kommt erstaunlich schnell in die Sprache rein, wenn man sich damit befasst. lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz