Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Dimmed Sample (https://www.delphipraxis.net/167397-dimmed-sample.html)

EWeiss 27. Mär 2012 23:51


Dimmed Sample
 
Projekt entfernt..

EWeiss 28. Mär 2012 04:11

AW: Dimmed Sample
 
Noch nicht perfekt aber ein Anfang.

Windows werden nun richtig gezeichnet.
Hatte vergessen das GetDC ja nur für den Client Bereich zuständig ist
Mit GetWindowDC hat's dann funktioniert.

Und die Farbe zu der gefaded werden soll kann man nun angeben.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

  AutoFade(Form1, RGB(255,255,255), RGB(0, 0, 0) {RGB(64,128,255), RGB(0, 32, 64)});
  ShowMessage('What nu.. Hi greyed out');
  deinit := DIMMED_DEINIT;

end;

gruss

s.h.a.r.k 28. Mär 2012 07:00

AW: Dimmed Sample
 
Darf man nach der Technik fragen, die du da anwendest? Legst du eine weiter Form über die bestehende? Oder greifst du irgendwie in die Zeichenprozedur ein?

EWeiss 28. Mär 2012 13:25

AW: Dimmed Sample
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1159019)
Darf man nach der Technik fragen, die du da anwendest? Legst du eine weiter Form über die bestehende? Oder greifst du irgendwie in die Zeichenprozedur ein?

Und als auch.. Beides
Ich lege eine Form als Child in die Anwendung kopiere den Hintergrund vom Devicekontex mit GetWindowDC / BitBlt
und übertrage diesen in das Childwindow dabei wird die Original Farbe in die Übergebene gefadet.

Das ganze EXE -> DLL

gruss

s.h.a.r.k 28. Mär 2012 14:42

AW: Dimmed Sample
 
Okay, hatte ich mir schon gedacht, dass das so läuft ;) Danke dir!

EWeiss 28. Mär 2012 15:38

AW: Dimmed Sample
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1159078)
Okay, hatte ich mir schon gedacht, dass das so läuft ;) Danke dir!

Lade den Source später mal hoch..
Hab im moment wiedermal ein problem beim Freigeben der Classe
mal gehts mal nicht :wall:

To many error in Free :oops:
Obwohl alles korrekt freigegeben wird.

Wüßte nicht was da falsch sein sollte.

Delphi-Quellcode:
type
  TFadeWnd = class(TComponent)
  private
    { Private-Deklarationen }
    procedure AutoFade(pParentWnd: TWinControl; clLight: COLORREF;
      clDark: COLORREF); stdcall;
     procedure CreateGradient(clLight: COLORREF;
      clDark: COLORREF); virtual;
    procedure FadeWnd(pParentWnd: TWinControl; clLight: COLORREF;
       clDark: COLORREF); stdcall;
  public
    function GetDibR(const drgb: cardinal): cardinal; inline;
    function GetDibG(const drgb: cardinal): cardinal; inline;
    function GetDibB(const drgb: cardinal): cardinal; inline;
    function Create(pParentWnd: TWinControl; rc: TRect): Bool; reintroduce; overload;
    constructor Create(AOwner: TWinControl); reintroduce; overload;
    destructor Destroy; override;
  protected
    m_clGradient: array [0..255] of COLORREF;
    m_hBitmap: HBITMAP;
    m_hNewBitmap: HBITMAP;
    m_pWndLock: TWinControl;
    procedure OnDraw(pDC: HDC);
    function CopyScreenToBitmap(lpRect: TRect): HBITMAP;
    function FadeBitmap(hBmp: HBITMAP; dfTrans: double = 100.0; hBmpDC: HDC = 0): HBITMAP;
  end;

var
  pFade: TFadeWnd;
  MainHandle: HWND;
  Pixels: array of Cardinal;

// Exports
function FadeCreate(pParentWnd: TWinControl;clLight: COLORREF;
      clDark: COLORREF): Bool; stdcall;
procedure FadeDestroy; stdcall;
Delphi-Quellcode:
procedure FadeDestroy; stdcall;
begin

   if Assigned(pFade) then
   begin
     DestroyWindow(MainHandle);
     pFade.Free;
     pFade := nil;
   end;
end;

gruss

TiGü 28. Mär 2012 15:57

AW: Dimmed Sample
 
Knallt's denn bei DestroyWindow(MainHandle) oder bei pFade.Free?

EWeiss 28. Mär 2012 16:43

AW: Dimmed Sample
 
Zitat:

Zitat von TiGü (Beitrag 1159094)
Knallt's denn bei DestroyWindow(MainHandle) oder bei pFade.Free?

War nicht identifizierbar.
Der Compiler geht ins ASM Window und steht in TObject.Free.

Muss mal schaun scheint ein problem mit dem Array Pixels zu sein.

EDIT:
Jo das wars..
Mußte nach der zuweisung vom neuen Bitmap das verändert wurde das Array löschen.

Delphi-Quellcode:
FillChar(Pixels, SizeOf(Pixels), 0);


Jetzt gehts..

gruss

EWeiss 28. Mär 2012 17:11

AW: Dimmed Sample
 
Hier zum Testen...

Bei mir läuft es auf Win7.

gruss

DeddyH 28. Mär 2012 17:23

AW: Dimmed Sample
 
Lööf... aber beim Schließen ist dann doch wieder Farbe zu sehen, wenn auch nur kurz ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.
Seite 1 von 4  1 23     Letzte » 

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