Spiegeleffekt für Bilder - mirrorImage()
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
JustusBetreff: Spiegeleffekt für Bilder - mirrorImage() |
Sa, März 17, 2007 14:23 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 |
Sa, März 17, 2007 15:36 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 |
Sa, März 17, 2007 18:53 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 |
Sa, März 17, 2007 19:17 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 |
Sa, März 17, 2007 21:35 Antworten mit Zitat |
|
---|---|---|
Warum berechnest du das Bild auch immer wieder neu?
Einmal vorberechnen sollte doch reichen oder? |
||
Ich wars nicht. |
Justus |
Sa, März 17, 2007 21:46 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 |
So, März 18, 2007 11:46 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 BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group