AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Alphablending Probleme

Ein Thema von Hoshy · begonnen am 25. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
Hoshy

Registriert seit: 27. Apr 2006
32 Beiträge
 
Delphi 7 Architect
 
#1

Alphablending Probleme

  Alt 25. Mai 2006, 15:24
Hallo,

ich kämpfe mit diversen Problemen beim Alphablending von Forms. Folgendes habe ich bisher probiert:

(1) AnimateWindow(Handle,500,AW_BLEND xor AW_ACTIVATE) im OnShow Event der Form.
Geht prinzipiell, aber erstens wird die Form erst eingeblendet und dann die Position der Form auf dem Schirm umgesetzt, weil z.B. Form.Position = poScreenCenter ist...sieht natürlich sehr doof aus. Zweitens "verschwinden" Komponenten, die auf der Form liegen, z. B. diverse Panel.

(2) Setzen des AlphaBlendValue innerhalb einer Schleife im OnActivate Event. Funktioniert prinzipiell gut, aber auf unterschiedlichen Rechnern läuft die Schleife unterschiedlich schnell ab, d. h. auf dem ersten Rechner blendet die Form in der gewünschten Geschwindigkeit ein, auf einem zweiten Rechner mit besserer CPU macht es "Plopp" und die Form ist sofort da...

(3) Mit "SetLayeredWindowAttributes" habe ich's gar nicht hinbekommen (warum auch immer).

Kann mir mal jemand auf die Spünge helfen
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Alphablending Probleme

  Alt 25. Mai 2006, 15:29
Zitat von Hoshy:
(2) Setzen des AlphaBlendValue innerhalb einer Schleife im OnActivate Event. Funktioniert prinzipiell gut, aber auf unterschiedlichen Rechnern läuft die Schleife unterschiedlich schnell ab, d. h. auf dem ersten Rechner blendet die Form in der gewünschten Geschwindigkeit ein, auf einem zweiten Rechner mit besserer CPU macht es "Plopp" und die Form ist sofort da...
Wie wärs mit einem Timer ? Ansonsten den neuen Alphawert einfach durch die Differenzzeit zum Programmstart errechnen.
Delphi-Quellcode:
delta := GetTickCount - StartTicks;
if delta < 3000 {ms} then
  alpha := delta / 3000 * 255;
...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


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:21 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