![]() |
Auswahl in Paint
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
und frohe ostern in paint kann ich über auswahl über ein bild, ein rechteck ziehen. wie kann ich das in delphi tun? momentan kann ich lediglich ein recheck in einem image, welches leer ist zeichnen sobald ich ein bild geladen habe funktioniert dies nicht mehr |
Re: Auswahl in Paint
Hallo, ebenfalls Frohe Ostern,
Was willst Du denn markieren bzw. wie und warum? |
Re: Auswahl in Paint
Wie machst Du es denn bisher?
|
Re: Auswahl in Paint
bei meinem Programm kann ich aus einem bild ein einen "markierten" teil in ein zweites image einfügen
um jetzt den zu kopierenden bereich zu markieren wollte ich dies mit einem rechteck zur besseren orientierung überzeichnen als rein der optik wegen |
Re: Auswahl in Paint
Hallo, Nero.
Ich glaube, früher stand soetwas sogar mal in der Delphi-Hilfe. Am einfachsten ist es, du benutzt den Pen-Mode pmNotXor. Dabei wird vereinfacht gesagt der Hintergrund der Linie invertiert. Das praktische daran ist, dass du den Vorgang einfach durch zweimaliges Zeichnen rückgängig machen kannst. Du überzeichnest also im OnMouseMove erst das alte Auswahlrechteck, dann zeichnest du das neue und merkst dir die Koordinaten in einer Variable, damit du es hinterher wieder überzeichnen kannst. Pseudocode:
Delphi-Quellcode:
[edit]Schlechtschreibung[/edit]
procedure OnMouseDown;
begin oldRect := Rect(x,y,0,0); // Startrechteck an Maus-Position mit Breite, Höhe = 0 startpoint := point(x,y); // Startpunkt merken end; procedure onMouseMove; var myRect: trect; begin if not mousepressed then exit; canvas.pen.mode := pmnotxor; // "Invertierungs"-Modus canvas.brush.style := bsclear; // Rechteck nicht füllen canvas.rectangle(oldRect); // Altes Rechteck überzeichnen myRect := Rect(startpoint.x,startpoint.y,x,y); // Startrechteck von Startposition aus zur Mausposition canvas.rectangle(myRect); // In älteren Delphiversionen musst du hier ggf. die Koordinaten einzeln angeben oldRect := myRect; // oldRect ist eine globale Variable, oder noch besser, ein privates Feld end; procedure onMouseUp; begin canvas.pen.mode := pmnotxor; canvas.brush.style := bsclear; canvas.rectangle(oldRect); // Altes Rechteck überzeichnen end; |
Re: Auswahl in Paint
vielen dank
das meinte ich danke |
Re: Auswahl in Paint
Du könntest vielleicht noch das machen:
Delphi-Quellcode:
Sieht noch ein bisschen schicker aus :wink:
Canvas.Pen.Style := psDot;
Mfg |
Re: Auswahl in Paint
Zitat:
Ich nutze Delphi2006 und das Mousemove Ereignis schaut hier so aus:
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); |
Re: Auswahl in Paint
Zitat:
|
Re: Auswahl in Paint
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 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