|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
C64-Fan
Anmeldungsdatum: 26.10.2012 Beiträge: 79
|
Verfasst am: 27.05.2019, 00:02 Titel: Transparente Schriftfarbe ? |
|
|
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.
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 |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 27.05.2019, 09:08 Titel: |
|
|
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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 27.05.2019, 15:56 Titel: |
|
|
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 |
|
|
C64-Fan
Anmeldungsdatum: 26.10.2012 Beiträge: 79
|
Verfasst am: 27.05.2019, 23:44 Titel: |
|
|
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.
Danke nochmal _________________ Mitglied-Nr. 2000 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 29.05.2019, 16:10 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 30.05.2019, 12:48 Titel: |
|
|
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 |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
|
Nach oben |
|
|
C64-Fan
Anmeldungsdatum: 26.10.2012 Beiträge: 79
|
Verfasst am: 02.06.2019, 23:23 Titel: |
|
|
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.
Schreib grad meine nächste Spielfortsetzung und kann sein das ich wieder mal anfrag wenn ich nicht weiterkomme. _________________ Mitglied-Nr. 2000 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 04.06.2019, 20:18 Titel: |
|
|
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.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
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.
|
|