![]() |
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; |
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; |
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ß |
Re: Screenshot anhand Mausposition
und was hindert dich daran das ganze in ein TImage zu laden?
|
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; |
Re: Screenshot anhand Mausposition
... das er mir für diese Zeile:
ScreenShot(Image1.Picture.BitMap); folgenden fehler ausgibt: Argument cant't be assigned to |
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; |
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:
allerdings bekomme cih dann beim compilen:
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; Project Editor raised exteption class 'External: SIGSEGV'. danach dann: Die Datei "i386.inc" wurde nicht gefunden ? |
Re: Screenshot anhand Mausposition
Zitat:
|
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. |
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