overlay?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

matz

Betreff: overlay?

BeitragDi, Jun 01, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
moin!

...wollte mal wissen, ob es möglich ist, dass eine bei einem bild einfarbige fläche (zb 255,0,0) durch ein anderes bild bedeckt wird... (overlay/bluebox-effekt)

...würd mich über ein code-beispiel freuen!

grüße
matz

Clonker

BeitragDi, Jun 01, 2004 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein Codebeispiel.
Du brauchst zwei Bilder dafür.

image2 ist das Hintergrundbild.
image ist das eigenliche Bild.

Bei blauanteil kannst du einstellen ab welchem blauanteil der Hintergrund gezeichnet werden soll.

Code: [AUSKLAPPEN]


image2 = LoadImage("Bild2.bmp") ;Hier änderbar
image = LoadImage("Bild1.bmp") ;Hier änderbar

blauanteil = 200 ;Hier ändern

save=0  ;Hier änderbar

IW = imagewidth(image)
IH = imageHeight(image)

Dim bild(IW,IH,3)
Dim bild2(IW,IH,3)

Graphics IW,IH,32,2

image = LoadImage("Bild1.bmp")
image2 = LoadImage("Bild2.bmp")

         
;bilder in den speicher lesen   
DrawImage image,0,0
LOCKBUFFER FRONTBUFFER()

For x=0 to IW
 For y=0 To IH
  rgb=READPIXELFAST(x,y)
  r=(rgb AND $FF0000)/$10000
  g=(rgb AND $FF00)/$100
  b=rgb AND $FF
   a=(rgb AND $FF000000)/$1000000

   bild(x,y,0) = rgb   
   bild(x,y,1) = r
   bild(x,y,2) = g
   bild(x,y,3) = b
 NExt
next

UNLOCKBUFFER FRONTBUFFER()
            
DrawImage image2,0,0
LOCKBUFFER FRONTBUFFER()

For x=0 to IW
 For y=0 To IH
  rgb=READPIXELFAST(x,y)
  r=(rgb AND $FF0000)/$10000
  g=(rgb AND $FF00)/$100
  b=rgb AND $FF
   a=(rgb AND $FF000000)/$1000000

   bild2(x,y,0) = rgb   
   bild2(x,y,1) = r
   bild2(x,y,2) = g
   bild2(x,y,3) = b
 NExt
next

UNLOCKBUFFER FRONTBUFFER()



cls

Color 255,0,0
Text IW/2-50,IH/2,"Taste drücken zu fortsetzen..."
waitkey

tempsecalt = Millisecs()

temp = createImage(IW,IH)
SetBuffer ImageBuffer(temp)

LOCKBUFFER


For x=0 to IW
 For y=0 To IH

   if bild(x,y,3) > blauanteil Then
    rgb=bild2(x,y,0)
    Else
     rgb=bild(x,y,0)
    Endif
   
   WritePixelFast x,y,rgb
   
 NExt
next

UNLOCKBUFFER



SetBuffer FrontBuffer()

cls

DrawImage temp,0,0

IF save = 1 Then
 SaveImage("bild.bmp", temp)
Endif

Waitkey()
End


Achja wictig dabei ist dass die Bilder gleichgroß sind.
Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz.

Athlon XP 2800|Radeon 9600 Pro|512MB DDR RAM|240GB Festplatte

matz

BeitragDi, Jun 01, 2004 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
;Achja wictig dabei ist dass die Bilder gleichgroß sind.

...kann das "eigentliche bild" nicht größer sein und zb. mit den pfeiltasten durchgescrollt werden?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group