In einer Grafik (Image) 512x256 Pixel Kacheln reinladen?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

funkheld

Betreff: In einer Grafik (Image) 512x256 Pixel Kacheln reinladen?

BeitragMi, Sep 13, 2023 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, guten Tag .

Ich möchte bitte in einer leeren Grafik(Image) 512x256 Pixel , Kacheln 128x128 reinladen und dann die gefüllte
Grafik anzeigen.

Ich habe 3 Kacheln:
Local grass:TImage = LoadImage ("gfx/grass.png")
Local rock:TImage = LoadImage ("gfx/rock.png")
Local water:TImage = LoadImage ("gfx/water.png")

und hier die Grafik :
Global bild:TImage=CreateImage(512,256)

Wo keine Kachel reinkommt soll die Grafik durchsichtig sein , damit man den Hintergrund sieht.

Ich bekomme das nicht hin.

Danke.
  • Zuletzt bearbeitet von funkheld am Mi, Sep 13, 2023 23:31, insgesamt 2-mal bearbeitet

Midimaster

BeitragMi, Sep 13, 2023 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du benötigst dazu PixMaps, keine Images!

also CreatePixMap() bzw. LoadPixMap()

und alle müssen das gleiche Farbtiefe-Format haben

danach kannst du die große Pixmap manipulieren:

ungetestet:
BlitzMax: [AUSKLAPPEN]

X=1
Y=2
Bild.Paste (Grass, X*128,Y*128)


Das sollte so funktionieren
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

funkheld

BeitragMi, Sep 13, 2023 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe.

Es funktioniert wunderbar.


Ich habe den Block die Farbe $ff00ff gegeben :

Global bild:TPixmap=CreatePixmap(128*2,128*2,PF_BGR888)
ClearPixels(bild, $ff00ff)

Wie kann man bitte den Block damit durchsichtig machen , damit man den Hintergrund sieht?


Gruss

Midimaster

BeitragDo, Sep 14, 2023 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du verwendest das falsche Farb-Format. Nimm PF_RGBA8888, damit auch A=Alpha drin ist. Dann Alpha auf 0 setzen und das gesamte Bild wird mit ClearPixels 0 dann transparent. Anders als der Name des Farbformates vermuten lässt ist die Reihenfolge der Hex-Bytes:

AA-RR-GG-BB

also ist FF 00 00 FF deckend blau

oder 80 00 FF 00 halbtransparent grün


lauffähiges Beispiel:
BlitzMax: [AUSKLAPPEN]
Graphics 800,600

'Transparentes leeres Bild
Global Bild:TPixmap=CreatePixmap(800,600,PF_RGBA8888)
ClearPixels Bild, 0

'rote Flecken ins durchsichtige Bild:
Global Rot:TPixmap=CreatePixmap(128,128,PF_RGBA8888)
ClearPixels Rot, $FFFF0000


'halbtransparente gelbe Flecken ins durchsichtige Bild:
Global Gelb:TPixmap=CreatePixmap(128,128,PF_RGBA8888)
ClearPixels gelb, $80FFFF00


' das Bild aus den Flecken erstellen:
Bild.paste rot, 100,100
Bild.paste rot, 250,200
Bild.paste Gelb, 450,350

SetBlend alphablend
Global Foto:TImage=LoadImage(Bild)
Repeat
'dunkelblauer hintergrund:
SetClsColor 0,0,111
Cls

'Hintergrund-Linien
SetColor 0,0,255
For Local i:Int=0 To 10
DrawRect 0,i*60,800,1
DrawRect i*80,0,1,600
Next
SetColor 255,255,255

'das Bild vollflächig davor:
DrawImage Foto, 0,0
Flip
Until AppTerminate()
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

funkheld

BeitragDo, Sep 14, 2023 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke , super gemacht.

Funktioniert klasse bei mir im Programm.

Gruss

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group