AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auswahl in Paint

Ein Thema von Nero der Professor · begonnen am 23. Mär 2008 · letzter Beitrag vom 5. Jul 2009
Antwort Antwort
Nero der Professor

Registriert seit: 15. Jun 2007
Ort: Halberstadt
14 Beiträge
 
Delphi 2009 Architect
 
#1

Auswahl in Paint

  Alt 23. Mär 2008, 14:48
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
Angehängte Grafiken
Dateityp: bmp forum_173.bmp (514,6 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Auswahl in Paint

  Alt 23. Mär 2008, 14:51
Hallo, ebenfalls Frohe Ostern,

Was willst Du denn markieren bzw. wie und warum?
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Auswahl in Paint

  Alt 23. Mär 2008, 14:52
Wie machst Du es denn bisher?
  Mit Zitat antworten Zitat
Nero der Professor

Registriert seit: 15. Jun 2007
Ort: Halberstadt
14 Beiträge
 
Delphi 2009 Architect
 
#4

Re: Auswahl in Paint

  Alt 23. Mär 2008, 14:55
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Auswahl in Paint

  Alt 23. Mär 2008, 15:26
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:
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;
[edit]Schlechtschreibung[/edit]
  Mit Zitat antworten Zitat
Nero der Professor

Registriert seit: 15. Jun 2007
Ort: Halberstadt
14 Beiträge
 
Delphi 2009 Architect
 
#6

Re: Auswahl in Paint

  Alt 23. Mär 2008, 15:36
vielen dank

das meinte ich

danke
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Auswahl in Paint

  Alt 23. Mär 2008, 16:50
Du könntest vielleicht noch das machen:Canvas.Pen.Style := psDot; Sieht noch ein bisschen schicker aus

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Auswahl in Paint

  Alt 5. Jul 2009, 12:43
Zitat von NamenLozer:
Delphi-Quellcode:
...
procedure onMouseMove;
var
  myRect: trect;
begin
  if not mousepressed then exit;
...
Wie krieg ich das mousepressed hin? Das kennt mein Delphi so nicht...

Ich nutze Delphi2006 und das Mousemove Ereignis schaut hier so aus:
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Auswahl in Paint

  Alt 5. Jul 2009, 12:49
Zitat von isilive:
Wie krieg ich das mousepressed hin? Das kennt mein Delphi so nicht...
Als Variable im Formular deklarieren und in OnMouseDown (mousepressed := True) und in OnMouseUp auf False setzen.
fork me on Github
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Auswahl in Paint

  Alt 5. Jul 2009, 15:15
Zitat von sx2008:
Zitat von isilive:
Wie krieg ich das mousepressed hin? Das kennt mein Delphi so nicht...
Als Variable im Formular deklarieren und in OnMouseDown (mousepressed := True) und in OnMouseUp auf False setzen.
Oder einfach durch "ssLeft in ShiftState" ersetzen, schliesslich wird der Maustastenstatus auch im Move mitgegeben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz