Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#13

Re: Bildschirmlupe - Bereich unter Formular ermitteln

  Alt 30. Dez 2008, 15:23
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat