AGB  ·  Datenschutz  ·  Impressum  







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

Nicht-Lineare Bewegung eines Fensters

Ein Thema von SittingDuck · begonnen am 7. Sep 2006 · letzter Beitrag vom 14. Sep 2006
 
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#1

Nicht-Lineare Bewegung eines Fensters

  Alt 7. Sep 2006, 17:11
Moin Moin ...

Wer den Launcher kennt, der weiss, das er eine AutoHide-Funktion besitzt.
Dabei wird das Fenster vom Bildschirm gezogen, entweder manuell oder nach einer
festgelegten Zeit. Die Bewegung des Fensters ist nahezu linear, denn ich gebe eine
Zeit in ms vor, in der sich der Launcher 'aus dem Staub' gemacht haben soll.
Zu Verdeutlichung hier der entsprechende Source-Code:

Delphi-Quellcode:
procedure TLauncher1.Slide;
var fw,fh,RPos: integer; Start,Step: Extended;
begin
 SlideSpeed := 500; // eine halbe Sekunde für die Bewegung
 
 Start := GetTickCount + SlideSpeed;

 if not Slided then begin
  ExHeight := Height;
  ExWidth := Width;
  RPos := Left + ExWidth;

  repeat
   Step := (Start - GetTickCount) / SlideSpeed;
   //^^ Verkleinerungs-Faktor abhängig von der verstichenen Zeit
   
   fh := Round(ExHeight * Step); // reduzierte Fensterhöhe
   fw := Round(ExWidth * Step); // -"- Fensterbreite

   if Slided then begin // Werte umdrehen um Fenster wieder herzustellen
    fh := ExHeight - fh; fw := ExWidth - fw;
   end;

   case Richtung of 1: Height := fh; // ab nach oben
                    2: begin Left := Screen.Width - fw; Width := fw; end; // rechts
                    3: begin Top := Screen.Height - fh; Height := fh; end; // unten
                    4: Width := fw; // Fenster nach links schieben
                    
   end;

   Application.ProcessMessages;

  until Start - GetTickCount < 0;

 end;
end;
Soweit so gut ... Das Ergebnis könnt Ihr Euch gerne mit der letzten
Beta-Version ansehen.

Nun schwebt mir eine 'nicht-lineare' Fensterbewegung vor, ähnlich einer teueren
Küchenschublade. Jeder kennt den Effekt, wenn so eine Schublade vor dem
Schließen nochmal kurz abgebremst wird. Diesen Effekt würde ich gerne in eine
entsprechende Formel pressen.

Ich schaffe es aber nicht meine Routine so abzuändern. Sämtliche Versuche
sehen entweder ruckelig aus oder enden in total verkrampften Source-Code.
Auch habe ich Zweifel am 'TimeBased Movement' meines Programms. Wahrscheinlich
kann man den gesamten Code sowieso noch schwer optimieren.

Für jeden Tipp dankbar, grüßt ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
 


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 18:15 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