Spiegeleffekt für Bilder - mirrorImage()
Übersicht

![]() |
JustusBetreff: Spiegeleffekt für Bilder - mirrorImage() |
![]() Antworten mit Zitat ![]() |
---|---|---|
Diese Funktion liefert ein Bild zurück, das vertikal gespiegelt und mit einem Transparenzverlauf versehen wurde, sodass der Eindruck einer Spiegelung entsteht.
Code: [AUSKLAPPEN] Function mirrorImage:TImage(img:TImage)
Local a:Int Local r:Int Local g:Int Local b:Int Local i:Int Local j:Int Local argb:Int Local pixmap:TPixmap = LockImage(img) pixmap = ConvertPixmap(pixmap,PF_RGBA8888) pixmap = YFlipPixmap(pixmap) For i = 0 To PixmapWidth(pixmap)-1 For j = 0 To PixmapHeight(pixmap)-1 argb = ReadPixel(pixmap,i,j) a:Int = Int(76.0*(1.0-((Float(j)/Float(ImageHeight(img)))))) If (argb Shr 24) = 0 Then a = 0 r:Int = (argb Shr 16) & $ff g:Int = (argb Shr 8) & $ff b:Int = argb & $ff argb = a*$1000000 + r*$10000 + g*$100 + b WritePixel pixmap,i,j,argb Next Next Return LoadImage(pixmap) EndFunction Wie schwach bzw. intensiv die Spiegelung ist, kann man einstellen, indem man die Variable maxAlpha in einem Wertebereich von 0.0 bis 255.0 ändert. Beispiel: |
||
- Zuletzt bearbeitet von Justus am Sa, März 17, 2007 20:14, insgesamt 3-mal bearbeitet
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hihi, iTunes lässt grüssen ![]() Sieht aber nett aus. |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
schaut interessant aus, habe leider im moment meinen laptop nicht hier um es zu testen. Aber wie schnell läuft diese Funktion, kann mal jemand nen paar werte liefern.
Fr3eMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
Justus |
![]() Antworten mit Zitat ![]() |
---|---|---|
400x300, 100 Durchläufe:
Dauer insgesamt: 12080 ms Durchschnitt: 120 ms 1024x768, 50 Durchläufe: Dauer insgesamt: 43950 ms Durchschnitt: 879 ms Also alles andere als realtimegeeignet ![]() |
||
![]() |
SchnittlauchUnkraut |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum berechnest du das Bild auch immer wieder neu?
Einmal vorberechnen sollte doch reichen oder? |
||
Ich wars nicht. |
![]() |
Justus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist völlig richtig, Schnittlauch. Irgendetwas anderes hat ja auch niemand behauptet. LoadImage benutzt man ja auch nicht im Mainloop. | ||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würde
Code: [AUSKLAPPEN] Graphics 640 , 480 , 0 , 0
Local img:timage = LoadImage("bmax120.png") Repeat Cls SetScale(1 , 1) DrawImage(img,0,0) SetScale(1 , - 1) DrawImage(img,0,400) Flip Until KeyHit(key_escape) das machen + einen 2. kanal drüber legen. dann müsste ich es auch nciht vorberechen. für was haben wir denn ne 3D Lib, für 2d darstellung. |
||
between angels and insects |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group