Текущий архив: 2004.05.30;
Скачать: CL | DM;
ВнизTcanvas Найти похожие ветки
← →
Dhg (2004-05-15 13:57) [0]Здраствуйте.
Как можно снять снимок экрана, но так, чтобы система не зависала при этом.
← →
Style © (2004-05-15 13:59) [1]>>Как можно снять снимок экрана, но так, чтобы система не >>зависала при этом.
А разве система зависает??
Можно на такой код посмотреть :)
← →
Dhg (2004-05-15 14:05) [2]two Style
Вот :
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var DeskTop : TCanvas ;
B: TBitmap;
begin
DeskTop := TCanvas.Create ;
B:=TBitmap.Create;
B.Width:=800;
B.Height:=600;
try
with DeskTop do
Handle := GetWindowDC (GetDesktopWindow) ;
with B.Canvas do
begin
CopyRect (Rect (0, 0, 800, 600),
DeskTop,
Rect (0, 0, 800, 600))
end;
finally
Image1.Picture.Bitmap :=B;
DeskTop.Free;
B.Free;
end
end;
end.
← →
Mim1 © (2004-05-15 14:21) [3]Попробуй заменить
Handle := GetWindowDC (GetDesktopWindow) ;
на
Handle := GetDC (0) ;
Если не поможет вынеси этот код в поток с низким приоритетом.
← →
Dhg (2004-05-15 14:28) [4]two Mim1
что используя getdc(0), что desktopwindow, тот же результат :).
Да, актуальная проблема :-)
← →
Mim1 © (2004-05-15 14:30) [5]Используйте не создавайте tcanvas вместо copyrect используйте BitBlt( приямо на хендл битмапа и экрана.
Не забывайте про ReleaseDC.
Страницы: 1 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.041 c