Jak zrobić zrzut ekranu do komponentu TImage
TeWuX
Jak zrobić zrzut ekranu do komponentu TImage ?
procedure TForm1.SnapShot(var Img : TImage; L,G,P,D : integer);
var ScreenDC : HDC;
ImageDC : HDC;
begin
Form1.Hide;
sleep(200);
ScreenDC := GetWindowDC(0);
Img.Picture.Bitmap.Height := D-G;
Img.Picture.Bitmap.Width := P-L;
ImageDC := Img.Picture.Bitmap.Canvas.Handle;
BitBlt(ImageDC, 0, 0,P-L, D-G , ScreenDC, 0, 0, SrcCopy);
Image1.Refresh;
Form1.Show;
end;
1 linia: ukrywamy formę aby nie było jej widać na zrzucie
2 linia: dajemy czas na ukrycie formy (można dać mniej)
3 linia: pobieramy uchwyt pulpitu
4 linia: ustawiamy wysokość Bitmapy
5 linia: ustawiamy szerokość Bitmapy
6 linia: pobieramy uchwyt płótna (canvas) od Image
7 linia: kopiujemy zawartość pulpitu na płótno
8 linia: odświeżamy Image
9 linia: pokazujemy formę
opis funkcji:
BitBlt(docelowy uchwyt : HDC,
docelowy lewy-górny punkt, oś X : integer,
docelowy lewy-górny punkt, oś Y : integer,
szerokość : integer,
wysokość : integer,
źródłowy uchwyt : HDC,
źródłowy lewy-górny punkt, oś X : integer,
źródłowy lewy-górny punkt, oś Y : integer,
rodzaj operacji : cardinal);
Jak zapisać rysunek, rysunki po formie do bitmapy, pliku ? Jak zrobić zrzut formy do bitmapy, pliku ?
można użyć bitmapy pamięciowej
var
Bitmap : TBitmap;
II,XX,YY,WW,HH : Integer;
Czerwony, Zielony, Niebieski : Integer;
Self.ClientWidth:=500;
Self.ClientHeight:=500;
Bitmap:=TBitmap.Create;
Bitmap.Width:=500;
Bitmap.Height:=500;
for II:=0 to 19 do begin
XX:= Random(400);
YY:= Random(400);
WW:= Random(100) + 50;
HH:= Random(100) + 50;
Czerwony := Random(255);
Zielony := Random(255);
Niebieski := Random(255);
Bitmap.Canvas.Brush.Color:= RGB(Czerwony,Zielony,Niebieski);
Bitmap.Canvas.Rectangle(XX,YY,WW,HH);
end;
Canvas.Draw(0,0, Bitmap);
Bitmap.SaveToFile('c:\test.bmp');
Bitmap.Free;
po zakończeniu tego zobacz co masz na dysku c
robak dopisz tą procedure to class(TForm)
Jak to później odpalić?
Nie działa :/ klikam i nic :/
TeWuX >> nawet nie chcę myśleć ile czasu zaoszczędziłem dzięki temu artowi :) Dzięki wielkie :)
a jak tego SnapShot' dodac?
Witam :) A mi pokazuje takie cos:
[Error] ekran.pas(25): Undeclared identifier: 'SnapShot'
Nie dodalem czegos do 'uses' ?? :(
brawo... tak powinien być wytłumaczony każdy tema na FAQ
Mi sie podoba:)
Kto to w ogóle ocenia??? Jak ktoś daje 1 to niech chociaż napisze DLACZEGO!!!!! Albo sam napisze lepszego Faqa o robieniu zrzutu ekranu!
gdzie ten kod wkleić ?