Bild im Uhrzeigersinn aufdecken
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
Bild im Uhrzeigersinn aufdecken
Hallo,
ja, ein etwas verwirrender Titel, aber im Grunde ist die Frage denk ich einfach.
Ob in Strategiespielen wie C&C oder auch in WoW, ihr kennt bestimmt diesen Effekt, wenn etwas nach Benutzung dunkel wird und sich dann wieder im Uhrzeigersinn in einem etwas helleren Ton aufdeckt bis es schließlich wieder wie vorher aussieht.
Die Frage könnte hier besitmmt schon einmal gestellt worden sein, aber mal ehrlich, nach was soll ich suchen?
Wie lässt sich das realisieren? Habe leider keinen blassen Schimmer.
Grüße,
Rubiko
ja, ein etwas verwirrender Titel, aber im Grunde ist die Frage denk ich einfach.
Ob in Strategiespielen wie C&C oder auch in WoW, ihr kennt bestimmt diesen Effekt, wenn etwas nach Benutzung dunkel wird und sich dann wieder im Uhrzeigersinn in einem etwas helleren Ton aufdeckt bis es schließlich wieder wie vorher aussieht.
Die Frage könnte hier besitmmt schon einmal gestellt worden sein, aber mal ehrlich, nach was soll ich suchen?
Wie lässt sich das realisieren? Habe leider keinen blassen Schimmer.
Grüße,
Rubiko
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Re: Bild im Uhrzeigersinn aufdecken
Vielleicht nach "Bild aufdecken" oder "Bild umdrehen"?Rubiko hat geschrieben:Die Frage könnte hier besitmmt schon einmal gestellt worden sein, aber mal ehrlich, nach was soll ich suchen?

Kuck doch mal ob die Suchergebnisse die Du damit bekommst das ist was Du suchst.
Gruß, Little John
- Rubiko
- Beiträge: 943
- Registriert: 25.02.2005 19:43
- Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti - Wohnort: Schwabach
4 Ergebnisse und nur eins möglicherweise relevant...
aber was hat das Umdrehen von Karten oder das Drehen einer Bilddatei mit meiner Frage zu tun? Sorry, aber vielleicht komm ich grade einfach nicht mit?
Es soll ja um ein vorhandenes Bild gehen, dass sich einfach im Uhrzeigersinn 'erhellt'. Ich denke das triffts jetzt am besten.
aber was hat das Umdrehen von Karten oder das Drehen einer Bilddatei mit meiner Frage zu tun? Sorry, aber vielleicht komm ich grade einfach nicht mit?
Es soll ja um ein vorhandenes Bild gehen, dass sich einfach im Uhrzeigersinn 'erhellt'. Ich denke das triffts jetzt am besten.
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Soweit ich weiß, gibt es hier im Forum Codes, mit denen man Teilkreise (Piecharts) erstellen
kann. Es müsste Codes mit WinAPI und ohne geben. Ich hab jetzt aber nicht konkret danach
gesucht.
Die Idee wäre allerdings einen Layer mit Alphablending über das zu erhellende Bild zu
setzen. Dabei ist der Layer eben dieser Teilkreis, den du von Zeit zu Zeit eben immer kleiner
machst.
Das Alphablending selbst geht dann ja einfach mittels der Sprite-Library, worüber du auch
einige Beispiele hier finden wirst.
Falls du allerdings die Sprite-Library gar nicht erst nutzen willst, dann gibt es sogar dafür im
Forum Codes, die Images mit Alphablending oder zumindest mit einer einstellbaren
Durchscheinbarkeit darstellen können
kann. Es müsste Codes mit WinAPI und ohne geben. Ich hab jetzt aber nicht konkret danach
gesucht.
Die Idee wäre allerdings einen Layer mit Alphablending über das zu erhellende Bild zu
setzen. Dabei ist der Layer eben dieser Teilkreis, den du von Zeit zu Zeit eben immer kleiner
machst.
Das Alphablending selbst geht dann ja einfach mittels der Sprite-Library, worüber du auch
einige Beispiele hier finden wirst.
Falls du allerdings die Sprite-Library gar nicht erst nutzen willst, dann gibt es sogar dafür im
Forum Codes, die Images mit Alphablending oder zumindest mit einer einstellbaren
Durchscheinbarkeit darstellen können
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Hab da mal was gemacht:
Vielleicht sollte man noch die inneren Bedingungen nach außen ziehen und das ganze etwas anders organisieren.
Code: Alles auswählen
; http://www.bradan.eu/
; DarkDragon
Procedure rgbClamped(r, g, b)
If r > 255 : r = 255 : ElseIf r < 0 : r = 0 : EndIf
If g > 255 : g = 255 : ElseIf g < 0 : g = 0 : EndIf
If b > 255 : b = 255 : ElseIf b < 0 : b = 0 : EndIf
ProcedureReturn RGB(r, g, b)
EndProcedure
Procedure doEffect(image, angle.d)
Protected width
Protected height
Protected halfWidth
Protected halfHeight
Protected x
Protected y
Protected color
Protected pixelAngle.d
angle = (angle * #PI) / 180.0
If IsImage(image)
width = ImageWidth(image)
height = ImageHeight(image)
halfWidth = width >> 1
halfHeight = height >> 1
If StartDrawing(ImageOutput(image))
For x = -halfWidth To halfWidth - 1
For y = -halfHeight To halfHeight - 1
; Es sei <u, v> : (R²)² --> R : (u, v) |--> u.x1 * v.x1 + u.x2 * v.x2
; das Standardskalarprodukt. Dann gilt für den Winkel zwischen den 2 Vektoren:
; angle = acos(<a, b> / (|a| * |b|))
pixelAngle = ACos(y / Sqr(x * x + y * y))
If angle < #PI And x > 0
If pixelAngle < angle
color = Point(x + halfWidth, height - (y + halfHeight) - 1)
color = rgbClamped(Red(color) + 50, Green(color) + 50, Blue(color) + 50)
Plot(x + halfWidth, height - (y + halfHeight) - 1, color)
EndIf
Else
If x > 0
color = Point(x + halfWidth, height - (y + halfHeight) - 1)
color = rgbClamped(Red(color) + 50, Green(color) + 50, Blue(color) + 50)
Plot(x + halfWidth, height - (y + halfHeight) - 1, color)
ElseIf pixelAngle < angle - #PI
color = Point(x + halfWidth, y + halfHeight)
color = rgbClamped(Red(color) + 50, Green(color) + 50, Blue(color) + 50)
Plot(x + halfWidth, y + halfHeight, color)
EndIf
EndIf
Next y
Next x
StopDrawing()
EndIf
EndIf
EndProcedure
Define angle.d
Define lastTime
Define currentTime
If OpenWindow(0, 0, 0, 128, 128, "Test")
If CreateImage(0, 64, 64)
If StartDrawing(ImageOutput(0))
Box(0, 0, 64, 64, RGB(255, 192, 32))
Circle(32, 32, 32, RGB(128, 128, 192))
StopDrawing()
angle = 0.0
lastTime = ElapsedMilliseconds()
Repeat
currentTime = ElapsedMilliseconds()
angle + (currentTime - lastTime) * 0.1
lastTime = currentTime
While angle > 360.0
angle - 360.0
Wend
CopyImage(0, 1)
If IsImage(1)
doEffect(1, angle)
If StartDrawing(WindowOutput(0))
DrawImage(ImageID(1), 32, 32, 64, 64)
StopDrawing()
EndIf
FreeImage(1)
EndIf
Until WindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
EndIf
Zuletzt geändert von DarkDragon am 13.08.2009 11:50, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Mir ist nicht bekannt, dass das so einfach mit der Sprite-Lib geht.NicTheQuick hat geschrieben:Soweit ich weiß, gibt es hier im Forum Codes, mit denen man Teilkreise (Piecharts) erstellen
kann. Es müsste Codes mit WinAPI und ohne geben. Ich hab jetzt aber nicht konkret danach
gesucht.
Die Idee wäre allerdings einen Layer mit Alphablending über das zu erhellende Bild zu
setzen. Dabei ist der Layer eben dieser Teilkreis, den du von Zeit zu Zeit eben immer kleiner
machst.
Das Alphablending selbst geht dann ja einfach mittels der Sprite-Library, worüber du auch
einige Beispiele hier finden wirst.
Falls du allerdings die Sprite-Library gar nicht erst nutzen willst, dann gibt es sogar dafür im
Forum Codes, die Images mit Alphablending oder zumindest mit einer einstellbaren
Durchscheinbarkeit darstellen können
Man müsste ein Sprite erstellen welches seinen Alphakanal von einem anderen bekommt.
Man kann ja Sprite3Ds aus PNGs mit eigenem Alphakanal erstellen, die Frage ist ob man diesen dann manipulieren kann.
I´a dllfreak2001
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Nimm doch lieber vorgerenderte Bilder. In Echtzeit ist das sowieso kaum zu bewerkstelligen es sei denn das Bild mit dem Alphakanal zum überblenden existiert bereits.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Jo geht total simpel. Auch normale Sprites unterstützen den Alphakanal, wenn die Graka das mitmacht (was jede DX9 Karte tun sollte). Die rechnen sowieso intern in ABGR, wenn ich mich jetzt nicht irre. Also ich hab in meinem Projekt aktuell garkeine Probleme mit dem Alphakanal. Habe erst auch PNG's verwendet. Bin aber nun auf ein eigenes Bildformat umgestiegen, wofür ich mir ne eigene Catch bzw. Load Prozedur geschrieben hab. Das ist wie gesagt sehr simpel mit dem Alphakanal.dllfreak2001 hat geschrieben: Mir ist nicht bekannt, dass das so einfach mit der Sprite-Lib geht.
Man müsste ein Sprite erstellen welches seinen Alphakanal von einem anderen bekommt.
Man kann ja Sprite3Ds aus PNGs mit eigenem Alphakanal erstellen, die Frage ist ob man diesen dann manipulieren kann.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
