Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Screenshot anhand Mausposition (https://www.delphipraxis.net/42278-screenshot-anhand-mausposition.html)

Nisbo 16. Mär 2005 19:09


Screenshot anhand Mausposition
 
Moin Moin

ich versuche gerade einen Screenshot anhand der Mausposition zu machen, also der start soll die Mausposition sein und das ende unten links, allerdings passt das alles nicht so richtig, zuerst hatte ich zwar den beginn an der richtigen stelle, nur hatte dann links und oben schwarze balken, jetzt habe ich es mit 2 rect versucht, aber dann kommen teilweise verzerrte bilder raus oder nur schwarz

wie muß ich die rects jetzt am besten anpassen ?

Delphi-Quellcode:
procedure ScreenShot(Bild: TBitMap);
var
  c  : TCanvas;
  r,a : TRect;
  breite, oben, links, hoehe : integer;
  MausPos: TPoint;
begin
  c       := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);

  try

    GetCursorPos(MausPos);

    links := MausPos.x;
    oben  := MausPos.y;
    hoehe := Screen.Height - oben;
    breite := Screen.Width - links;
 
    a          := Rect(links, oben, breite, hoehe);
    r          := Rect(0, 0, breite, hoehe);
    Bild.Width := breite;
    Bild.Height := hoehe;
    Bild.Canvas.CopyRect(r, c, a);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;

sniper_w 16. Mär 2005 19:55

Re: Screenshot anhand Mausposition
 
Und so läuft es :wink:
Delphi-Quellcode:
procedure ScreenShot(var Bild: TBitMap);
var
  Mydc : cardinal;
  MausPos: TPoint;
begin
  MyDc := GetDC(0);
  GetCursorPos(MausPos);
  Bild.PixelFormat := pf32bit;
  Bild.Width := Screen.Width - MausPos.X;
  Bild.Height := Screen.Height - MausPos.Y;
  BitBlt(Bild.Canvas.Handle,0,0,Bild.Width,Bild.Height,Mydc,MausPos.X,MausPos.Y,SRCCOPY);
  Bild.SaveToFile('c:\Pic.bmp');
  ReleaseDC(0, Mydc);
end;

procedure TForm1.Button1Click(Sender: TObject);
 var MyPic : TBitmap;
begin
 MyPic := TBitmap.Create;
 ScreenShot(MyPic);
 MyPic.Free;
end;

Nisbo 17. Mär 2005 04:07

Re: Screenshot anhand Mausposition
 
Das ist ja aber leider nicht das was ich vorhabe, denn ich lade es ja in ein TImage :(
deshalb ja auch die frage wie ich die rects anpassen muß

SirThornberry 17. Mär 2005 06:56

Re: Screenshot anhand Mausposition
 
und was hindert dich daran das ganze in ein TImage zu laden?

sniper_w 17. Mär 2005 12:54

Re: Screenshot anhand Mausposition
 
Nun ja. Wie wäre es damit: :roll:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ScreenShot(Image1.Picure.Bitmap);
end;

Nisbo 17. Mär 2005 15:58

Re: Screenshot anhand Mausposition
 
... das er mir für diese Zeile:

ScreenShot(Image1.Picture.BitMap);

folgenden fehler ausgibt:

Argument cant't be assigned to

glkgereon 17. Mär 2005 16:43

Re: Screenshot anhand Mausposition
 
wahrscheinlich is Bitmap eine property, und die können net als var-parameter mitgegeben werden (mein ich zumindes)

probier es mal so:

Delphi-Quellcode:
Temp:=TBitmap.Create;
Temp:=xxx.Bitmap;
ScreenShot(Temp);
xxx.Bitmap:=Temp;
Temp.Free;

Nisbo 17. Mär 2005 17:32

Re: Screenshot anhand Mausposition
 
jetzt satgt er mir:

no identifier found for xxx / Temp
als was muß das deklariert werden ?

var xxx : ???
var Temp : ???

Sorry bin nicht unbedingt der fitteste :D

EDIT:

var Temp: TBitmap;

aber xxx ?

EDIT 2: arg denke mal das war das: Image1.Picture

Delphi-Quellcode:
procedure TForm7.Button3Click(Sender: TObject);
var Temp: TBitmap;
begin
  Form7.Visible := False;
  Sleep(1000);
  // ScreenShot(Image1.Picture.BitMap);
  Temp:=TBitmap.Create;
  Temp:=Image1.Picture.Bitmap;
  ScreenShot(Temp);
  Image1.Picture.Bitmap:=Temp;
  Temp.Free;
  Form7.Visible := True;
end;
allerdings bekomme cih dann beim compilen:

Project Editor raised exteption class 'External: SIGSEGV'.

danach dann:

Die Datei "i386.inc" wurde nicht gefunden ?

sniper_w 17. Mär 2005 18:37

Re: Screenshot anhand Mausposition
 
Zitat:

Project Editor raised exteption class 'External: SIGSEGV'.

danach dann:

Die Datei "i386.inc" wurde nicht gefunden ?
Dieser Fehler liegt irgendwo anders, aber nicht im geposteten Code.

Nisbo 18. Mär 2005 04:01

Re: Screenshot anhand Mausposition
 
mmm OK vielleicht könnten wir dann meinen ursprungscode versuchen umzustellen so das es passt ? sitze da jetzt schon 3 Tage lang fest und irgendwann verliert man dann leider die Lust daran :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz