[B2D, B+] Transparentbilder in echtzeit zeichnen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Smily

Betreff: [B2D, B+] Transparentbilder in echtzeit zeichnen

BeitragDo, Mai 24, 2007 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
soo seit langem habe ich mal statt einer Spielerrei was brauchbares Fabriziert:

Benötigt werden 2 Bilder im selben ordner: img.bmp und back.bmp notfalls kritzelt ihr einfach was mit paint hin.

Bei meinem PC (1,8 GHz) läuft das Programm flüssig und der effekt ist von einer "echten" transparenz nicht zu unterscheiden.

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
timer = CreateTimer(60)
tmp = LoadImage("img.bmp")
back = LoadImage("back.bmp")

MidHandle(tmp)
sx = ImageWidth(tmp)
sy = ImageHeight(tmp)
img = CreateImage(sx,sy,2)
MidHandle(img)
For b = 0 To 1
   SetBuffer ImageBuffer(img,b)
   DrawImage tmp,sx/2,sy/2
   Color 0,0,0
   For x = 0 To sx
      For y = 0 + (x Mod 2) - b To sy Step 2
         Plot x,y
      next
   Next
Next
SetBuffer BackBuffer()
Repeat
   TileBlock back, c
   c = C + 1
   DrawImage img,mousex(), MouseY() ,c Mod 2
   waittimer(timer)
   flip
Until KeyHit(1)
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
  • Zuletzt bearbeitet von Smily am Do, Mai 24, 2007 17:13, insgesamt einmal bearbeitet

ToeB

BeitragDo, Mai 24, 2007 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist wirklich gelungen ! Mit so wenig Code Shocked ...

Naja, kann ich vilieicht irgentwann mal gebrauchen !!

Danke !


thx und mfg
Wink
Crack93


~[edit]~

Ich hab mal daraus ne Function geschrieben :

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
timer = CreateTimer(60)
tmp = LoadImage("img.bmp")
back = LoadImage("back.bmp")
img = CreateTransImage(tmp)
Repeat
   TileBlock back, c
   c = C + 1
   DrawImage img,MouseX(), MouseY() ,c Mod 2
   WaitTimer(timer)
   Flip
Until KeyHit(1)

Function CreateTransImage(Image)
MidHandle Image
sx = ImageWidth(Image)
sy = ImageHeight(Image)
img = CreateImage(sx,sy,2)
MidHandle(img)
mask = CreateImage(100,100)
For b = 0 To 1
   SetBuffer ImageBuffer(img,b)
   DrawImage Image,sx/2,sy/2
   Color 0,0,0
   For x = 0 To sx
      For y = 0 + (x Mod 2) - b To sy Step 2
         Plot x,y
      Next
   Next
Next
SetBuffer BackBuffer()
Return img
End Function
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Triton

Betreff: Re: [B2D, B+] Transparentbilder in echtzeit zeichnen

BeitragDo, Mai 24, 2007 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:


Bei meinem PC (1,8 GHz) läuft das Programm flüssig und der effekt ist von einer "echten" transparenz nicht zu unterscheiden.


Hmm, doch. Bei mir flimmert es. Habe 3,4 GHz und TFT.

edit--
Wenn man den Timer aber auf die Bildwiederholfrequenz des Monitors einstellt (75 bei mir), dann flimmert es zumindest nicht mehr, wenn es still steht (in der Bewegung dennnoch).
Coding: silizium-net.de | Portfolio: Triton.ch.vu
  • Zuletzt bearbeitet von Triton am Do, Mai 24, 2007 17:29, insgesamt einmal bearbeitet

Smily

Betreff: Re: [B2D, B+] Transparentbilder in echtzeit zeichnen

BeitragDo, Mai 24, 2007 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Triton hat Folgendes geschrieben:
Smily0412 hat Folgendes geschrieben:


Bei meinem PC (1,8 GHz) läuft das Programm flüssig und der effekt ist von einer "echten" transparenz nicht zu unterscheiden.


Hmm, doch. Bei mir flimmert es. Habe 3,4 GHz und TFT.


wieviel FPS hat das Program bei dir?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 24, 2007 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das flimmern kommt wohl, wegen eines nicht HighEnd-TFT-Bildschirmes, wo die Ein- und Ausschaltzeiten der Pixel unterschiedlich lang sind. Man könnte diesem Problem entgegentretten, wenn man das faketransparente Bild immer jeweils um 2 Pixel X/Y bewegen würde.

Wie sich ein TFT-Bildschirm verhält, lässt sich zB ganz schnell selbst herausfinden, indem man zB in Notepad ein Text einlädt und dann das Fenster langsam über den Bildschirm bewegt. Dabei darf sich die Gesamthelligkeit des Bildschirmes nicht ändern. Wobei man hier wirklich sehr pinibel schauen muß. Richtig schlechte Bildschirme wiederrum gehen fast aus bei sowas, nur solche werden schon seit einigen Jahren nicht mehr verkauft.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group