AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Flackernder Fade-Effect
Thema durchsuchen
Ansicht
Themen-Optionen

Flackernder Fade-Effect

Ein Thema von Flo.Hoe · begonnen am 25. Jul 2007 · letzter Beitrag vom 3. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#1

Flackernder Fade-Effect

  Alt 25. Jul 2007, 23:59
Hi,
Zum einblenden einer Form im Vollbildmodus lege ich zuerst eine schwarz gestrichene Form über sie und lasse sie(die schwarze Form) dann nach und nach durchsichtig werden.
Dafür benutze ich folgende Prozedur:

Delphi-Quellcode:

Procedure TDecke.FadeIn;
var i:Byte;
begin
  for I := 25 downto 0 do begin
      AlphaBlendValue:=round(i*10.2);
      Zeit.delay(10);

  end;
end;
Leider flackert dieser Vorgang ungemein. Es bilden sich Streifen mit leicht unterschiedlicher Farbabstufung.
Außerdem scheint die Berechnung sehr hohe Systemanforderungen zu stellen. So dauert es bei meinem Rechner (1 GHz) eine ganze statt einer viertel Sekunde.
Ich würde mich freuen, wenn mir jemand Helfen könnte.
Florian
  Mit Zitat antworten Zitat
PiQ

Registriert seit: 6. Okt 2006
42 Beiträge
 
Delphi 7 Personal
 
#2

Re: Flackernder Fade-Effect

  Alt 26. Jul 2007, 00:05
also ich machs so

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  form1.AlphaBlendValue := form1.AlphaBlendValue - 1;
  if form1.AlphaBlendValue = 10
    then
      begin
        timer1.Enabled := false;
        form2.show;
        form1.hide;
      end;
  end;
isses das was du meinst
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#3

Re: Flackernder Fade-Effect

  Alt 26. Jul 2007, 00:56
Es bleibt dabei wenn ich die Transparenz langsam verändere (-1), dann bleibt es ruckelfrei, ist aber dafür extrem langsam. Bei - 10 Entstehen die Streifen.
Gibt es denn keine schnelle saubere Variante,eine Form "ein-zu-Faden"?
Florian
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: Flackernder Fade-Effect

  Alt 1. Aug 2007, 13:38
Benutze den Tipp von PiQ (damit läuft es auf unterschiedlich starken "Maschinen" gleich schnell)
und füge in deinem Form im Ereignis "OnCreate" die Zeile "DoubleBuffered := True" ein.
Damit werden Änderungen an deinem Form mit dem Aufbau eines neuen Bildes am Monitor synchronisiert!
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#5

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 01:06
Die Streifen bleiben und die Berechnung scheint immer noch zu kompliziert zu sein.
Warum muss es eigentlich eine ganze schwarze Form sein die über eine andere gelegt wird. Ich vermute einfach das die Versuche bisher nur so eine Art Notlösung sind. Es muss einfacher gehen. Zum Beispiel gibt es ältere Adventure, die solche Effekte auf damaligen Rechnern gezaubert haben(ganz streifenlos und in Windes Eile).
Florian
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 01:45
Hallo,

alte Spiele (ich vermute Du meinst DOS-Spiele) hatten eine geringe Auflösung und wenig Farben. Außerdem hatten sie komplette Kontrolle über den Rechner. Die einzige Möglichkeit unter Windows, diese Art der Kontrolle zu erlangen, heißt DirectX bzw. OpenGl. Mit dem GDI hast Du schlechte Karten. Du musst bedenken, die Philosophie hinter GDI ist "einfach und kompatibel, dafür langsam".

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 22:43
Ich habe das mal ausprobiert und bekomme auch Streifen wenn ich den AlphaBlend-Wert
mit Schrittweiten größer 5 setze und den Timer-Wert kleiner setze damit nicht so
viel Bilder pro Sekunde berechnet werden müssen.


Ich habe meinen Lösungsvorschlag mal angehängt.
Es wird besser wenn man die größe des Fensters reduziert...


Aber ich fürchte xaromz hat recht: Die alten DOS-Spiele haben
bei ca. 320x240 Bildpunkten direkt in den Speicher der Grafikkarte
geschrieben und dabei massiv Assembler-Code eingesetzt. Damit sind
Geschwindigkeiten möglich von denen jede Hochsprache nur träumen
kann.

Einen Ausweg bieten da wirklich nur die Grafik-Schnittstellen.
Dummerweise muß man in DirectX oder OpenGL deutlich mehr Aufwand
treiben als ein simples "AlphaBlendValue := x"...

Die Windows-GDI-Bordmittel taugen nur für den Zweck eine konstante
Transparenz zu erzeugen aber nicht für einen fließenden Effekt.
Da sind einfach zu viele Schichten, Prüfungen und Treiber die
vielen verschiedenen Anforderungen gleich gerecht werden müssen
und nicht nur auf einen einzigen Zweck hin ausgerichtet bzw.
optimiert sind.
Angehängte Dateien
Dateityp: zip fade_147.zip (213,6 KB, 34x aufgerufen)
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 22:50
Alte DOS-Spiele hatten noch einen anderen Trick, sie hatten nämlich in vielen Fällen nur 256 Farben, d.h. eine Palette. Paletten haben ganz viele Nachteile - aber man kann sie prima für allerlei Effekte manipulieren. Man muss quasi nur 256 Einträge von je 2-3 Byte pro Frame bearbeiten, also maximal 768 Byte, statt 320x240. Da kann man also die Palette "ein-faden" statt des Bildes.

Edit: Im Vollbildmodus braucht man doch gar keine Forms. Ab Vista ist dein hausgebackener Einblendeffekt ohnehin hinfällig, und davon abgesehen hast du im Vollbildmodus doch die volle Kontrolle über die Zeichnung. Und da kannst du auch mit der GDI oder von Hand ganz schön schnell alphablenden.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 23:04
Zitat von skyobserver:
Ich habe meinen Lösungsvorschlag mal angehängt.
Es wird besser wenn man die größe des Fensters reduziert...
Hi,

so wie du das gemacht hast, sieht es bei mir ähnlich aus wie AnimateWindow(self.Handle, 2000, AW_BLEND);
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

Re: Flackernder Fade-Effect

  Alt 3. Aug 2007, 23:23
@bitsetter: Wo kommt denn "AnimateWindow" her? (finde ich nicht in meiner Delhi/Windows-OH...)

@OregonGhost: Was meinst Du mit "voller Kontrolle" im Vollbildmodus?
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz