Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildschirm abdunkeln? (https://www.delphipraxis.net/119190-bildschirm-abdunkeln.html)

BullsEye 21. Aug 2008 19:31


Bildschirm abdunkeln?
 
Hallo Leute,

ich möchte gerne den Bildschirm abdunkeln! Aber nicht komplett sondern nur den ungenutzten Bereich! Sprich ich habe ein Fenster, und alles was um das Fenster drum herum ist, BSP: Desktop + Icons etc soll abgedunkelt werden, so das das haupt Augenmerk auf mein Fenster fällt!
Ich habe diese Funktion schon einmal beim DivX Webplayer irgrendwo gesehen.

s.h.a.r.k 21. Aug 2008 19:37

Re: Bildschirm abdunkeln?
 
man könnte da definitiv ein, meiner meinung nach perveres features nutzen. lege zwei forms hintereinander. die hintere form mit den folgenden eigentschaften:

Delphi-Quellcode:
AlphaBlend     := True;
AlphaBlendValue := 100;   // Hier kannst ja nocht rumschrauben
                           // oder einen Timer einsetzen, um den
                          // Verlauf kontinuierliche zu ändern
BorderStyle    := bsNone;
// Form über die ganze Fläche legen
Left           := 0;
Top            := 0;
Width          := Screen.WorkAreaWidth;
Height         := Screen.WorkAreaHeight;
und die fordere form eben dann für deine anwendung, in so fern du diese überhaupt brauchst.

ps: dies funktioniert halt nur auf einem monitor, nicht aber wenn du mehrere hast. dafür würde ich dann mehrere forms zum abdunkeln empfehlen, aber ist irgendwie eine perverse lösung. vielleicht kann man ja passend auf dem desktop zeichnen, das weiß ich nicht. wenn dir davon den canvas holst... wäre auch eine möglichkeit.

BullsEye 21. Aug 2008 19:53

Re: Bildschirm abdunkeln?
 
h3h3 und schon wieder was schönes, nützliches neues dazugelernt!

Aber ich weiß nicht so recht ob das so wirklich das gewollte Ergebniss bringt. Ich teste mal noch ein wenig rum!

EDIT: Ich denke dies würde eher in den Sinn kommen:

Delphi-Quellcode:
Width          := Screen.Width;
Height         := Screen.Height;
Da ich BSP meine Taskleiste oben habe, kommt bei dem mit Workarea unten ein Streifen(Da wo sonst die Taskleiste ist) der nicht abgedunkelt wird^^

s.h.a.r.k 21. Aug 2008 20:33

Re: Bildschirm abdunkeln?
 
Zitat:

Zitat von BullsEye
Da ich BSP meine Taskleiste oben habe, kommt bei dem mit Workarea unten ein Streifen(Da wo sonst die Taskleiste ist) der nicht abgedunkelt wird^^

das stimmt, ja. hab einen kleinen, aber feinen fehler gemacht ;)

musst du dann so machen:
Delphi-Quellcode:
AlphaBlend     := True;
AlphaBlendValue := 100; // Hier kannst ja nocht rumschrauben
                        // oder einen Timer einsetzen, um den
                        // Verlauf kontinuierliche zu ändern
BorderStyle    := bsNone;
Left           := Screen.WorkAreaRect.Left;
Top            := Screen.WorkAreaRect.Top;
Width          := Screen.WorkAreaWidth;
Height         := Screen.WorkAreaHeight;
in diesem fall, wenn ich nichts vergessen haben sollte, müsste er die taskbar praktisch immer berücksichtigen.

BullsEye 21. Aug 2008 21:36

Re: Bildschirm abdunkeln?
 
Ja, so funktioniert das alles auch wunderbar!

Besten Dank!

PS: Das sollte keine negative Kretik sein sondern ein Verbesserungsvorschlag ;)

Luckie 21. Aug 2008 22:13

Re: Bildschirm abdunkeln?
 
Man könnte auch einen Screenshot vom Desktop machen. Diesen dunkler machen und das ganze auf die hineter Form kopieren. War jetzt nur so ein Schnellschuss, ohne länger darüber nachgedacht zu haben.

Neutral General 21. Aug 2008 22:18

Re: Bildschirm abdunkeln?
 
Zitat:

Zitat von Luckie
Man könnte auch einen Screenshot vom Desktop machen. Diesen dunkler machen und das ganze auf die hineter Form kopieren. War jetzt nur so ein Schnellschuss, ohne länger darüber nachgedacht zu haben.

Könnte gehn, allerdings nur wenn das Fenster modal angezeigt wird. Und dann muss man auch bei jedem Resize neu zeichnen.

s.h.a.r.k 22. Aug 2008 07:08

Re: Bildschirm abdunkeln?
 
Zitat:

Zitat von Neutral General
Zitat:

Zitat von Luckie
Man könnte auch einen Screenshot vom Desktop machen. Diesen dunkler machen und das ganze auf die hineter Form kopieren. War jetzt nur so ein Schnellschuss, ohne länger darüber nachgedacht zu haben.

Könnte gehn, allerdings nur wenn das Fenster modal angezeigt wird. Und dann muss man auch bei jedem Resize neu zeichnen.

hm, dem ist imho nicht so, da dies die gleiche idee ist wie meine, nur eben kein alpha-wert genommen, sondern eben einen screenshot. wenn diese idee nicht funktioniert - gleiche einstellungen, wie die von mir weiter oben definierten (außer das alpha-gedöns) vorausgesetzt - dann würde meine ja auch nicht funktionieren. wichtig ist es halt, dass man die hintere form nicht verschieben oder schließen dürfte, bzw. die fordere form in den hintergrund der anwendung ruscht. das müsste man noch passend abfangen.

die frage, die sich mir hierbei stellt ist, welche methode, steuerung über alpha-wert oder über eingefärbte grafik, denn effizienter funktioniert!? :thumb: und vor allem warum das so ist?!

christian.noeding 22. Aug 2008 08:08

Re: Bildschirm abdunkeln?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

um weiterhin Mausklicks auf den Desktop zuzulassen, würde ich folgendes im FormShow der Abdunklungsform empfehlen:

Delphi-Quellcode:
  setWindowLong(Handle, GWL_EXSTYLE,
    getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED);
Dies erlaubt das "durchklicken" durch die Form (siehe angehängtes Beispiel :) )


bis dann,
Christian :)

BullsEye 22. Aug 2008 15:51

Re: Bildschirm abdunkeln?
 
Naja das mit dem Screenshots finde ich nicht ganz so toll, da bevorzuge ich das mit dem AlphaBlend des einen Formulares.

Ohja, danke @Christian, das hätte ich fast vergessen^^ Aber so ist das ne gute Lösung ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 1 von 2  1 2      

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