Damit sieht es besser aus:
Delphi-Quellcode:
procedure TForm1.ontmr(Sender: TObject);
const
factor = 2;
var
SrcRect : TRect;
DestRect : TRect;
hDesktop : Hwnd;
dcDesktop : HDC;
begin
if (frmTop <> Form1.Left) or (frmLeft <> Form1.Top)
then try
frmTop := Form1.Left;
frmLeft := Form1.Top;
img.Visible := False;
Form1.TransparentColor := True;
hDesktop := GetDesktopWindow;
dcDesktop := GetWindowDC(hDesktop);
SrcRect.Left := img.Width div (factor * 2);
SrcRect.Top := img.Height div (factor * 2);
SrcRect.Right := SrcRect.Left + (img.Width div factor);
SrcRect.Bottom := SrcRect.Top + (img.Height div factor);
DestRect := img.Canvas.ClipRect;
bmp.Width := DestRect.Right - DestRect.Left;
bmp.Height := DestRect.Bottom - DestRect.Top;
BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, dcDesktop, img.ClientOrigin.X, img.ClientOrigin.Y, srcCopy);
img.Canvas.CopyRect(DestRect, bmp.Canvas, SrcRect);
finally
ReleaseDC(dcDesktop, hDesktop);
img.Visible := True;
Form1.TransparentColor := False;
end;
end;
Zitat von
Sunlight7:
Der 2. Link vergrößert ein (von Datei geladenes) Bitmap, das auf dem Formular gezeichnet wird.
Wäre also doch passend, da der Desktop nun ebenfalls als Bitmap vorliegt.