Wie bekomme ich ein Bild in eine BANK?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

funkheld

Betreff: Wie bekomme ich ein Bild in eine BANK?

BeitragMo, Aug 22, 2016 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, guten.

Wie bekomme ich bitte dieses Bild in eine BANK zum manipulieren ?

Code: [AUSKLAPPEN]

Global bank_bild:tbank = CreateBank(50000)

Global bild:TImage=CreateImage(70,40)
SetColor 0,0,255
DrawRect 0,0,70,40
SetColor 255,255,255
GrabImage bild,0,0
cls



Danke.
Gruss

Midimaster

BeitragMo, Aug 22, 2016 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, eine Bank ist ein zusammenhängerder Block Memory, den Du wie "in ganz alten Zeiten" mit PEEK auslesen oder mit POKE beschreiben kannst. TBank bedeut nur "Type of Bank", gewissermaßen die "Klasse" einer Bank, Daraus kannst Du BANKs createn und typische Funktionen dazu finden. Auch die Methoden der BANK sind darin enthalten.

Wenn du in der in der BlitzMax IDE einen Befehl wie "TBank" in deinem Code geschrieben hast, kannst Du den Cursor drauf setzen und 2x die F1-Taste drücken und erhältst so Auflistung des Types (der "Klasse") mit all seinen Methoden und Funktionen
BlitzMax: [AUSKLAPPEN]
MyBank:TBank = TBank.Create(1000)
MyBank.PokeInt 678,1234
Print MyBank.PeekInt(678)


upps., Du hast plötzlich den Inhalt Deiner Frage komplett geändert... Meine Antwort zielt noch auf deine erste Version. Zweite Antwort folgt...


Das Manipulieren eines Bildes machst Du besser über PIXMAP. Das ist eine manipulierbare Form von Images. Der Vorteil gegenüber BANK ist, dass Du weiterhin Adressen über X- und Y-Koordinaten ansprechen kannst. Ebenso werden die Farben und die Transparenz gleich korrekt in den Speicher geschrieben.

BlitzMax: [AUSKLAPPEN]
Bild:TImage=CreateImage(70,40)
GrabImage Bild,0,0
ARGB%=$FF112233
Pix:TPixmap=LockImage(Bild)
Pix.WritePixel 10,10, ARGB
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
  • Zuletzt bearbeitet von Midimaster am Mo, Aug 22, 2016 17:31, insgesamt einmal bearbeitet
 

funkheld

BeitragMo, Aug 22, 2016 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja danke.

Du hast mir sehr geholfen.

Danke.
Gruss
  • Zuletzt bearbeitet von funkheld am Mo, Aug 22, 2016 17:38, insgesamt einmal bearbeitet

Midimaster

BeitragMo, Aug 22, 2016 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
wilst Du wirklich ein Image mit BANK manipulieren geht das über die Adresse des Memory-Blocks:
BlitzMax: [AUSKLAPPEN]
Bild:TImage=CreateImage(70,40)
GrabImage Bild,0,0
Pix:TPixmap=LockImage(Bild)
Adresse:Byte Ptr=Byte Ptr(Pix.PixelPtr(0,0))
MyBank:TBank=CreateStaticBank (Adresse,1000)
MyBank.PokeInt 678,1234


Das nachträgliche Abspeichern entfällt, da du damit direkt und sofort im Image manipulierst.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
  • Zuletzt bearbeitet von Midimaster am Mo, Aug 22, 2016 18:08, insgesamt einmal bearbeitet
 

funkheld

BeitragMo, Aug 22, 2016 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke werde ich jetzt probieren.

Danke.
Gruss

Midimaster

BeitragMo, Aug 22, 2016 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
probiers mal so:
BlitzMax: [AUSKLAPPEN]
Graphics 300,200
Bild:TImage=CreateImage(70,40)
GrabImage Bild,0,0

Pix:TPixmap=LockImage(Bild)
Local Adresse:Byte Ptr = Byte Ptr(Pix.PixelPtr(0,0))

MyBank:TBank=CreateStaticBank (Adresse,1000)
MyBank.PokeInt 678,1234
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

funkheld

BeitragMo, Aug 22, 2016 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte das "Global" vergessen davor zu setzen.

Jetzt funktioniert es wunderbar.
In beiden Programm wird das Rechteck Grün gezeichnet.

Eine tolle Sache hast du mir gezeigt.
Jetzt werde ich mal versuchen die Adressen mit dem "C" zu beschreiben und mit ASM.

Mit Byte:
Code: [AUSKLAPPEN]

Graphics 600,400

global z:int

Global bild:TImage=CreateImage(70,40)
global Pix:TPixmap=LockImage(bild)
global Adresse:byte Ptr = Pix.PixelPtr(0,0)
global MyBank:TBank=CreateStaticBank (Adresse,12000)

Repeat
   Cls

  for z=0 to 11200 step 4
    MyBank.Pokebyte z,$0
    MyBank.Pokebyte z+1,$ff
    MyBank.Pokebyte z+2,$0
    MyBank.Pokebyte z+3,$ff
  next

  setcolor 255,255,255
  DrawImage bild,100,100

    Flip
Until KeyHit (KEY_ESCAPE)


Mit Int:
Code: [AUSKLAPPEN]

Graphics 600,400

global z:int

Global bild:TImage=CreateImage(70,40)
global Pix:TPixmap=LockImage(bild)
global Adresse:byte Ptr = Pix.PixelPtr(0,0)
global MyBank:TBank=CreateStaticBank (Adresse,12000)

Repeat
   Cls

  for z=0 to 11200 step 4
    MyBank.Pokeint z,$ff00ff00
  next

  setcolor 255,255,255
  DrawImage bild,100,100

    Flip
Until KeyHit (KEY_ESCAPE)


Danke.

Gruss
 

funkheld

BeitragMo, Aug 22, 2016 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
...............................
  • Zuletzt bearbeitet von funkheld am Di, Aug 23, 2016 9:33, insgesamt 3-mal bearbeitet

Xeres

Moderator

BeitragMo, Aug 22, 2016 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weise dich nochmal darauf hin: Bitte Editiere deine Beiträge nach, statt mehrere hintereinander zu posten.
Danke.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group