' Text mit Schatteneffekt ausgeben ' (c) 2004 by Andreas Meile, CH-8242 Hofen SH DIM SHARED xBr%, yBr%, bpp%, MaxF% DECLARE SUB Kalibriere () DECLARE SUB PixelPrint (x%, y%, f%, t$) DECLARE SUB SchattPrint (x%, y%, SchrF%, SchattF%, t$, xOffs%, yOffs%) SCREEN 7 Kalibriere LINE (0, 0)-(319, 199), 7, BF ' Etwas Hintergrund erzeugen Pi! = 4! * ATN(1!) FOR i% = 0 TO 34 w! = CSNG(i%) * 2! * Pi! / 35! LINE (160!, 100!)-(160! + 114! * COS(w!), 100! + 95! * SIN(w!)), 1 + i% MOD 5 NEXT i% ' Unsere schattierten Texte schreiben wir einfach voll darber... :-) SchattPrint 60, 21, 14, 5, "Hallo qbasic.de-Freund,", -1, 1 SchattPrint 4, 41, 10, 0, "Im Folgenden geben wir diverse", -1, 1 SchattPrint 4, 51, 11, 0, "Texte in verschiedenen Farben", -1, 1 SchattPrint 4, 61, 9, 0, "aus, der Effekt beruht auf der", -1, 1 SchattPrint 4, 71, 13, 0, "Verwendung einer Pixel-genauen", -1, 1 SchattPrint 4, 81, 12, 0, "PRINT-Prozedur, welche ausserdem", -1, 1 SchattPrint 4, 91, 14, 0, "einen transparenten Hintergrund", -1, 1 SchattPrint 4, 101, 15, 0, "untersttzt. Besonders raffiniert", -1, 1 SchattPrint 4, 111, 12, 8, "ist die Erzeugung ohne langsame FOR-", -1, 1 SchattPrint 4, 121, 15, 1, "Schleife nur mit Hilfe von GET/PUT und", -1, 1 SchattPrint 4, 131, 15, 2, "LINE (...),BF, ausserdem funktioniert", -1, 1 SchattPrint 4, 141, 14, 4, "das Ganze unabh„ngig vom SCREEN-Modus,", -1, 1 SchattPrint 4, 151, 13, 8, "man muss lediglich Kalibriere() auf-", -1, 1 SchattPrint 4, 161, 14, 8, "rufen unmittelbar nach SCREEN und", -1, 1 SchattPrint 4, 171, 10, 0, "WIDTH. :-)", -1, 1 d$ = INPUT$(1) SCREEN 0 WIDTH 80, 25 SUB Kalibriere ' Gr”sster Farbwert ermitteln PSET (0, 0), 255 MaxF% = POINT(0, 0) ' daraus die Anzahl Bits pro Pixel bestimmen h% = MaxF% bpp% = 0 WHILE h% > 0 bpp% = bpp% + 1 h% = h% \ 2 WEND ' Schlussendlich noch die Gr”sse eines Zeichens bestimmen LOCATE 1, 1 PRINT "Û " PRINT " " xBr% = 0 WHILE POINT(xBr%, 0) > 0 xBr% = xBr% + 1 WEND yBr% = 0 WHILE POINT(0, yBr%) > 0 yBr% = yBr% + 1 WEND END SUB SUB PixelPrint (x%, y%, f%, t$) ' x%,y%: Textplatzierung ' f% = Farbe, t$ = auszugebender Text IF t$ <> "" THEN h% = LEN(t$) * ((xBr% * yBr% * bpp%) \ 16) + 1 DIM wh%(h%), pt%(h%) ' Hilfsbereich sichern GET (0, 0)-(xBr% * LEN(t$) - 1, yBr% - 1), wh% ' AND-"Stanzmaske" zusammenstellen LOCATE 1, 1 COLOR MaxF% PRINT t$; GET (0, 0)-(xBr% * LEN(t$) - 1, yBr% - 1), pt% LINE (0, 0)-(xBr% * LEN(t$) - 1, yBr% - 1), MaxF%, BF PUT (0, 0), pt%, XOR GET (0, 0)-(xBr% * LEN(t$) - 1, yBr% - 1), pt% ' und diese anwenden PUT (x%, y%), pt%, AND ' XOR-F„rbung ausfhren LOCATE 1, 1 COLOR f% PRINT t$; GET (0, 0)-(xBr% * LEN(t$) - 1, yBr% - 1), pt% ' und diese anwenden PUT (x%, y%), pt%, XOR ' Hilfsbereich wiederherstellen PUT (0, 0), wh%, PSET ' Wieder freigeben ERASE wh%, pt% END IF END SUB SUB SchattPrint (x%, y%, SchrF%, SchattF%, t$, xOffs%, yOffs%) ' x%,y% = Position (pixelgenau) ' SchrF%, SchattF% = Schrift- und Schattenfarbe ' t$ = auszugebender Text ' xOffs%, yOffs% = perspektivische Verschiebung des Schattens ' Zuerst Schatten ausgeben PixelPrint x% + xOffs%, y% + yOffs%, SchattF%, t$ ' Dann auch die Schrift selber PixelPrint x%, y%, SchrF%, t$ END SUB