  | 
					
						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: 26.05.2019, 23: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, 08: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: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 27.05.2019, 14: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, 22: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: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 29.05.2019, 15: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: 1283 Wohnort: Ruhrpott
  | 
		
			
				 Verfasst am: 30.05.2019, 11: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, 22: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: 1283 Wohnort: Ruhrpott
  | 
		
			
				 Verfasst am: 04.06.2019, 19: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.
  | 
   
 
     |