Bilder in Screen12
Moderatoren:crack, Marwin, Krüsty
- Marwin
- Moderator
- Beiträge:307
- Registriert:Donnerstag 8. Mai 2003, 21:19
- Wohnort:Seelow, Deutschland
- Kontaktdaten:
Hier ein Programmteil zum Anzeigen einer bestimmten BMP-Grafik an einer bestimmten Position, wobei die Grafik eine bestimmte Größe haben muss. Weiterhin kann eine transparente Farbe angegeben werden.
Das Hauptprogramm:
Die Funktion GrafikLaden:
Wenn die Grafik ohne Beachtung der Abmessungen gezeichnet werden soll, dann nehmt einfach die Parameter Breite und Hoehe heraus, und löscht diese Zeilen:
^_^ Marwin
Das Hauptprogramm:
Code: Alles auswählen
DECLARE FUNCTION GrafikLaden (Dateiname$, Breite, Hoehe, xLinks, yOben, Transparenz)
SCREEN 12
DIM Karten(5) AS STRING
Karten(1) = "01.bmp"
Karten(2) = "02.bmp"
Karten(3) = "03.bmp"
Karten(4) = "04.bmp"
Karten(5) = "05.bmp"
FOR Grafik = 1 TO 5
Wert = GrafikLaden(Karten(Grafik), KartenBreite, KartenHoehe, (10 + KartenBreite) * (Grafik - 1), 10, 15)
NEXT
Code: Alles auswählen
FUNCTION GrafikLaden (Dateiname$, Breite, Hoehe, xLinks, yOben, Transparenz)
Parameter:
Breite -> wenn das Bild nicht diese Breite besitzt, wird mit einem Fehler beendet
Hoehe -> wenn das Bild nicht diese Höhe besitzt, wird mit einem Fehler beendet
xLinks, yOben -> Position der linken oberen Ecke des zu zeichnenden Bildes
Transparenz -> wenn >= 0 und <=15 dann wird diese Farbe nicht gezeichnet, dass
heißt der Hintergrund bleibt bei diesen Pixeln erhalten (vorgetäuschte Transparenz)
nächste freie Dateinummer ermitteln
Dateinummer = FREEFILE
der Dateikopf einer Bitmap-Grafik ist 54 Byte lang
Dateikopf$ = SPACE$(54)
OPEN Dateiname$ FOR BINARY AS Dateinummer
wenn die Datei leer ist, dann mit einem Fehler beenden
IF LOF(Dateinummer) = 0 THEN GOTO Fehler
Dateikopf holen
GET Dateinummer, 1, Dateikopf$
die ersten zwei Byte müssen die Zeichen "BM" sein, um zu kennzeichnen,
dass diese Datei eine BMP-Datei ist
IF LEFT$(Dateikopf$, 2) <> "BM" THEN GOTO Fehler
weitere Daten überprüfen
IF CVL(MID$(Dateikopf$, 15, 4)) <> 40 THEN GOTO Fehler
IF CVI(MID$(Dateikopf$, 27, 2)) <> 1 THEN GOTO Fehler
IF CVI(MID$(Dateikopf$, 29, 2)) <> 4 THEN GOTO Fehler
IF CVL(MID$(Dateikopf$, 31, 4)) <> 0 THEN GOTO Fehler
prüfen, ob die Bildbreite korrekt ist
BildBreite = CVL(MID$(Dateikopf$, 19, 4))
BildHoehe = CVL(MID$(Dateikopf$, 23, 4))
IF BildBreite <> Breite THEN GOTO Fehler
IF BildHoehe <> Hoehe THEN GOTO Fehler
die Bilddaten auslesen
SEEK Dateinummer, CVL(MID$(Dateikopf$, 11, 4)) + 1
Daten$ = SPACE$((((BildBreite - 1) OR 7) + 1) \ 2)
Laenge = (BildBreite \ 2) - 1
FOR Y = (BildHoehe - 1) TO 0 STEP -1
GET Dateinummer, , Daten$
FOR X = 0 TO Laenge
Byte = ASC(MID$(Daten$, X + 1, 1))
und auf dem Bildschirm ausgeben
IF (Byte \ 16) <> Transparenz THEN
PSET (X * 2 + xLinks, Y + yOben), Byte \ 16
END IF
IF (Byte AND 15) <> Transparenz THEN
PSET (X * 2 + 1 + xLinks, Y + yOben), Byte AND 15
END IF
NEXT
NEXT
GrafikLaden = TRUE
GOTO Fertig
Fehler:
GrafikLaden = FALSE
Fertig:
CLOSE Dateinummer
END FUNCTION
Code: Alles auswählen
IF BildBreite <> Breite THEN GOTO Fehler
IF BildHoehe <> Hoehe THEN GOTO Fehler