Avatar billede snowball Novice
12. juni 2000 - 21:32 Der er 4 kommentarer og
1 løsning

Screenshot - Komplet "pakke"

Jeg har tidligere fået lavet noget kode som kunnne ta' et screenshot og gemme det i en fil. Jeg har også få lavet noget kode som kunne ændre størrelsen på billedet. Det sidste virker bare ikke helt når billedet skal bruges i et andet Delphi program !

Derfor vil jeg gerne ha' lavet source code der kan følgende:

1. Ta' et screenshot
2. Skalér billedet til halv størrelse
3. Gemmme billedet som en jpg fil

Kan du lave det, så er point'ene dine ;)

Snowball
Avatar billede borrisholt Novice
12. juni 2000 - 21:52 #1
Tag en form placer et Timage komponent på den. Og en knap. Skriv der efter det følgende kode :

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
JPEG, ShellAPi;

function ScreenCapture:TBitmap;
// this function captures the screen
var
  ScreenDC: HDC;
ARect:TRect;
begin
  Result := TBitmap.Create;
  ARect := Rect(0,0,Screen.Width,Screen.Height);
  Result.Width := ARect.Right - ARect.Left;
  Result.Height := ARect.Bottom - ARect.Top;
  ScreenDC := GetDC( 0 );
  try
    BitBlt( Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, ScreenDC, ARect.Left, ARect.Top, SRCCOPY );
  finally
    ReleaseDC( 0, ScreenDC );
  end;
end;



//You might also want to use this procedure, because the bmp is normally pretty huge
//this converts the a Bitmap to a JPEG image

procedure TForm1.Button2Click(Sender: TObject);
var
  BitmapImage : TBitmap;
  JPEGImage : TJPEGImage;
begin
BitmapImage := ScreenCapture();
JpegImage := TJPEGImage.Create;
Try
  BitmapImage.Width := BitmapImage.Width div 2;
  BitmapImage.Height := BitmapImage.Height div 2;
  JPEGImage.Assign(BitmapImage);
  Image1.Picture.Assign(JPEGImage);
  JpegImage.SaveTofile('Tmp.JPEG');
Finally
  JPEGImage.Free;
  BitMapImage.Free;
end;
ShellExecute(handle,'open','Tmp.JPEG','','',SW_NORMAL);
end;
end.

Jens B
Avatar billede snowball Novice
12. juni 2000 - 22:01 #2
Det ser ganske fornuftigt ud, og med meget mindre kode end det sidste jeg fik lavet ;)

Jeg ved ikke lige om jeg når at få testet det i aften, men jeg vil teste det hurtigst mulig, og så skal du nok få dine point hvis det virker !

Snowball
Avatar billede borrisholt Novice
12. juni 2000 - 22:06 #3
For andre eksempler på Screen Capture så kig på http://borrisholt.com
Avatar billede snowball Novice
14. juni 2000 - 19:01 #4
Det virker fint, bortset lige fra 1 ting: Billedet bli'r ikke skaleret til halv størrelse !!!

Jeg har prøvet at indsætte JpegImage.Scale := jsHalf; men så får jeg bare en JPEG error #41 !?!?!?

Hvis du lige hurtigt skriver hvordan man skalerer billedet så er point'ene dine ;)

Snowball
Avatar billede snowball Novice
14. juni 2000 - 20:34 #5
Kom lige til at se noget !!!

BitmapImage.Width := BitmapImage.Width div 2;
BitmapImage.Height := BitmapImage.Height div 2;

Den kode laver ikke billedet til halv størrelse ! Eller jo, det gør den, men den cutter billedet ! Altså den laver ikke billedet mindre på en måde så hele billedet stadig er der, men beskærer billedet !!!
 
Snowball
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester