![]() |
Rahmen begrenzen Canvas
Hallo Leute !
Hab gerade mal eine Denkblokade. Ich zeichne mittels Mouse einen Rahmen auf ein Image, das der Rahmen nicht nach links bzw. nach oben gezeichnet werden kann hab ich schon hinbekommen. Jetzt muss ich noch den Rahmen begrenzen im Image das man ihn nicht nach links und unten über das Image hinausziehen kann. Bräuchte mal einen kleinen Tipp :wink: Edit: Quelltext vergessen anzufügen |
Re: Rahmen begrenzen Canvas
Ich vermisse den Quelltext ein wenig. Die allgemeine Lösung ist:
Delphi-Quellcode:
Dürfte so theoretisch funktionieren. Was der Rahmen genau ist, ist wiederum eine andere Sache.
if (Rahmen.Height > Image.Height - Rahmen.Top) then
Rahmen.Heihgt := Image.Height - Rahmen.Top; if (Rahmen.Width > Image.Width - Rahmen.Left) then Rahmen.Width := Image.Width - Rahmen.Left; PS: Lege doch eine Zeichnung an, wenn du Probleme hast, dir Abstände und deren resultierenden Formeln bildlich vorzustellen. Gruß blackdrake |
Re: Rahmen begrenzen Canvas
Danke Blackdrake für deine Mühe, bin nur nicht auf Client gekommen.
Hier der funktionierende Quelltext, wurde ja auch schon öfters nach gefragt vieleicht kann ihn ja jemand gebrauchen.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Image1.Canvas.Pen.Mode:= pmNotXOR; Image1.Canvas.Pen.Style:= psDot; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Image1.Canvas.Brush.Style:= bsClear; Image1.Canvas.Rectangle(x1,y1,x2,y2); //Vorheriges löschen if Shift = [ssLeft] then begin x1:= X; y1:= Y; x2:= X; y2:= Y; end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Shift = [ssLeft] then begin if (X > x1) and (Y > y1) then begin Image1.Canvas.Rectangle(x1,y1,x2,y2); x2 := X; y2 := Y; if X > Image1.ClientWidth then x2:= Image1.ClientWidth; if Y > Image1.ClientHeight then y2:= Image1.ClientHeight; Image1.Canvas.Rectangle(x1,y1,x2,y2); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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