Ich lasse unter Delphi 5 auf einem TPanel ein Standbild eines MPEG anzeigen. Nun möchte ich dieses Standbild auf ein TImage kopieren. Wenn ich dies mit „CopyRect“ des TCanvas mache, erhalte ich im TImage im Bereich des AVI nur eine schwarze Fläche. Warum?
Gibt es eine Möglichkeit, (vielleicht mit einer API-Funktion) einen beliebigen Bildschirmbereich, auch außerhalb der eigenen Anwendung, zu kopieren?
Ich bin ein mieser Programmierer, ABER ICH KANN DIR HELFEN.
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTop : TCanvas ;
begin
DeskTop := TCanvas.Create ;
try
with DeskTop do
Handle := GetWindowDC (GetDesktopWindow) ;
with PaintBox1.Canvas do
CopyRect (Rect (0, 0, 200, 200),
DeskTop,
Rect (0, 0, 200, 200))
finally
DeskTop.Free
end
end;
//Ich geb zu der quelltext ist geklaut
Damit kopierst du exakt das was von 0,0 bis 200,200 auf dem bildschirm ist in dein canvas.
jetzt musst du halt nur wissen wo genau die stelle auf dem Bildschirm ist die du rauskopieren möchtest.
HMM… naja schaffst du schon *g*
OOOODER
uses … , clipbrd;
…
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
begin
keybd_event(alt-taste*,0,1,0);
keybd_event(druck-taste*,0,0,0);
keybd_event(alt-taste*,0,0,0);
//musst du dir mal die hilfe zu
//keybd_event durchlesen.
//jedenfalls sollte das das aktuelle fenster ins clipboard
//kopieren wie wenn man alt+Druck drückt.
if Clipboard.HasFormat(CF_BITMAP) then
begin
Image1.Picture.Bitmap.Assign(Clipboard);
end;
//und hier sollte der inhalt des Clipboardes in eine image-
//komponente kopiert werden.
end;
probiers halt mal das erste geht sicher, das zweite sollte dafür aber nur das aktuelle fenster als bild zurückgeben.
MfG Roman Kraus
Hallo Roman,
vielen Dank für Deine Bemühungen, aber es funktioniert keine der Methoden auf meinem PC. Mittlerweile habe ich das ganze mal auf meinem Notebook ausprobiert, und siehe da, es funktioniert. Ich glaube, es ist ein Problem mit meiner Grafikkarte. Es sieht ganz so aus, als würden Videos anderen Gesetzen gehorchen, als andere Elemente auf dem Bildschirm.
Gruß Dieter