Du bist nicht angemeldet.

[ gelöst ] Screen Flash

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.10.2 (Q, H)
Beta: 3.3.11.4 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 08.04.2014 - 15:42 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »pete_gzome« ist der Autor dieses Themas

Registrierungsdatum: 22. September 2009

  • Private Nachricht senden

1

Sonntag, 11. März 2012, 14:20

Screen Flash

Hi,

ich habe ein normales Fenster, in das ich mit GDI+ zeichne.

Jetzt möchte ich einen "screen flash" machen. Damit meine ich eine Art fade-out Effekt, der sehr schnell vorüber ist. Ich weiß nicht wie ich es besser erklären kann... man könnte es vielleicht vergleichen mit dem Blitz, der kommt, wenn man ein Foto macht.

Ich habe z. B. die Farbe grün (#00ff00) mit anfänglich keiner Transparenz (ff00ff00). Die Farbe blende ich dann ein und ändere dann schrittweise ganz schnell die Transparenz so, dass diese immer größer wird bis schlussendlich volle Transparenz ist (0000ff00).

Leider weiß ich nicht wie ich das machen könnte. Meine Idee wäre einen Brush der Farbe zu erstellen und dann in einer Schleife die Transparenz schrittweise zu ändern, aber ich weiß wie gesagt nicht wie ich anfangen soll...

Ich hoffe mir kann jemand helfen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »pete_gzome« (12. März 2012, 10:41)


name22

Incognito

Registrierungsdatum: 28. Dezember 2009

Wohnort: Baden Württemberg

Beruf: Lehreralptraum

  • Private Nachricht senden

2

Sonntag, 11. März 2012, 14:36

Zeichneimmer wieder ein Rechteck über das gesamte Fenster. Den Brush für dieses Rechteck kannst du Scritt für Schritt so anpassen:

AutoIt-Quellcode

1
_GDIPlus_BrushSetSolidColor($hBrush, BitShift($iTrans, -32) + 0x00FF00 ;Ungetestet, ich weiß nicht ob AutoIt mit so großen Integern umgeht wie ich es mir vorstelle...)

$iTrans darf nur Integerwerte von 0 (Transparent) bis 255 (nicht Transparent) annehmen. Die zweite Hexadezimalzahl stellt die Farbe dar die dein Rechteck nachher haben soll im Format RRGGBB.
Am Anfang sollte der Brush mit $iTrans = 255 erstellt werden, danach kannst du bis auf 0 herunterzählen (nicht unter 0, danach muss abgebrichen werden!). Wenn du willst, kannst du auch die Sinusfunktion verwenden, um einen "weicheren" Übergang zu erzeugen, nur musst du dann mit Round oder Int die Zahl auf den einen ganzzahligen Wert runden.

AutoIt

MyPastebin

Registrierungsdatum: 5. März 2011

Wohnort: Bern, Schweiz

Beruf: Elektroniker EFZ (in Ausbildung)

  • Private Nachricht senden

3

Sonntag, 11. März 2012, 15:23

ICH würde es so machen:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
For $i = 4294967295 To 16777215 Step -16777216
    _GDIPlus_BrushSetSolidColor($hBrush, BitAND(0xFF00FF00, $i))
    ; Hier Zeichnest du das Rechteck
    Sleep(1)
Next

Falls dich die Zahlen verwirren, eigentlich sollte es so sein:
For $i = 0xFFFFFFFF To 0x00FFFFFF Step -0x01000000
Leider akzeptiert AutoIt aber heine Hex-Zahlen in For-Schleifen, wie ich gerade feststellen musste. Wenns dir zu langsam ist nimmst du für den Step einfach die Dezimalen Werte von 0x02000000 oder 0x03000000.

Gruss Shadowigor
Fragen? Guckst du Hier --> Hilfe
Immer noch Fragen? Guckst du Hier --> Google
Immer noch keine Antwort? Jetzt kannst du Fragen --> AutoIt.de
---------------------------------------------------------------------------------------------------------
Rekursive Dateiauflistung <--> PolyShoot (Game) <--> Script-Update UDF

name22

Incognito

Registrierungsdatum: 28. Dezember 2009

Wohnort: Baden Württemberg

Beruf: Lehreralptraum

  • Private Nachricht senden

4

Sonntag, 11. März 2012, 15:38

Das selbe in Grün....
Du musst übrigens auch GraphicsClear nach jedem Schritt anwenden und das alles neuzeichnen was normalerweise erscheint. Dann zeichnest du das Rechteck drüber.

AutoIt

MyPastebin

  • »pete_gzome« ist der Autor dieses Themas

Registrierungsdatum: 22. September 2009

  • Private Nachricht senden

5

Sonntag, 11. März 2012, 15:38

Danke für die Antworten!

Ich habe heute leider keine Zeit mehr es auszuprobieren, werde es aber morgen tun und mich hier dann noch einmal melden.

  • »pete_gzome« ist der Autor dieses Themas

Registrierungsdatum: 22. September 2009

  • Private Nachricht senden

6

Montag, 12. März 2012, 10:41

Ich habe es jetzt so gemacht:

AutoIt-Quellcode

1
2
3
4
5
6
7
    For $i = 4294967295 To 16777215 Step -117440512
        ;...
        _GDIPlus_BrushSetSolidColor($brushScreenFlash, BitAND($screenFlashColor, $i))
        _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, $iWidth, $iHeight, $brushScreenFlash)
        ;...
        Sleep(1)
    Next


Funktioniert perfekt.

Vielen Dank!

autoit.de Webutation