Thema: Delphi Bild vom Fenster

Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Bild vom Fenster

  Alt 7. Mai 2004, 21:04
Hallo,
das scheint jetzt aber zu funktionieren
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  WindowDC : HDC;
begin
  // Verhindert dass das Bild bei mehrmaligem klicken immer kleiner wird ???
  Image1.Picture:=Nil;
  Application.ProcessMessages;
  // Verhindert dass das Bild bei mehrmaligem klicken immer kleiner wird ???
  // Warum weiss ich aber nicht
  Image1.Picture.Bitmap.Width:=Width;
  Image1.Picture.Bitmap.Height:=Height;
  WindowDC := GetWindowDC(Handle);
  Try
    BitBlt(Image1.Picture.Bitmap.Canvas.Handle,0,0,Width,Height,WindowDC,0,0,SRCCOPY);
    Image1.Invalidate;
  Finally
    ReleaseDC(Handle,WindowDC);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var Lhwnd: HWND;
    LCanvas: TCanvas;
    LDest: Tbitmap;
begin
  LDest := TBitmap.Create;
  LDest.Width := width;
  LDest.Height := Height;
  Lhwnd := GetWindowDC(GetDesktopWindow);
  LCanvas := TCanvas.Create;
  LCanvas.Handle := Lhwnd;
  BitBlt(Ldest.Canvas.Handle, 0, 0, width, height, LCanvas.Handle, left, top, SRCCOPY);
  Image1.Picture.Assign(LDest);
  LCanvas.Free;
  ReleaseDC(GetDesktopWindow, Lhwnd);
  LDest.Free;
end;

end.
I come from outer space to save the human race
  Mit Zitat antworten Zitat