AGB  ·  Datenschutz  ·  Impressum  







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

Rechtecke auf TImage "ziehen"

Ein Thema von Delphi-Narr · begonnen am 1. Feb 2010 · letzter Beitrag vom 1. Feb 2010
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:14
Hallo,
ich bin gerade dabei, eine Art Paintprogramm zu schreiben. Dabei gibt es nur ein kleines Problem:

Ich möchte Rechtecke und Ellipsen auf der TImage Komponente aufziehen.
Ich abeite mit MouseDown, MouseMove und MouseUp. Bei MouseDown wird der Ursprungspunkt des Rechtecks in den Variablen x2 und y2 gespeichert. Außerdem wird die TBitmap Variable "Alt" auf das aktuelle Bitmap der TImage gesetzt.
Bei MouseMove soll wird dann erst der alte Zustand wiederhergestellt werden

Image1.picture.bitmap:=Alt; und dann das Rechteck gezogen werden.

Image1.Canvas.Rectangle(X2,Y2,X,Y); Dabei bekomme ich leider immer eine Zugriffsverletzung...
Wo ist der Fehler oder kann man das auf diese Art gar nicht machen. OnFormCreate habe ich die Variable mit


Alt:=TBitmap.Create; initialisiert...

Liebe Grüße!
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:16
Ich würde zur graphischen Ausgabe keine Image-Komponente nehmen, sonder einfach auf die Zeichenfläche einer Paintbox zeichnen. Die Image-Komponente ist für sowas eigentlich nicht gedacht.

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:18
Zitat von patti:
Die Image-Komponente ist für sowas eigentlich nicht gedacht.
Aber es müsste ja trotzdem möglich sein.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:22
Ich weiß zwar nicht, was gegen die Verwendung einer Paintbox-Komponente spricht, aber gut. Vielleicht solltest du anstatt

Image1.Canvas.Rectangle(X2,Y2,X,Y); einmal

Image1.Picture.Bitmap.Canvas.Rectangle(X2,Y2,X,Y); versuchen (kann dir im Moment aber auch nicht sagen, ob das so funktioniert). Allerdings müsstest du in diesem Fall der Image-Komponente wohl noch mitteilen, dass sie sich neu zeichnen muss.
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:26
Mit
Image1.picture.bitmap.Assign(Alt);
statt
Image1.picture.bitmap:=Alt;
könnte es evtl. hinhauen. Irgendwie sowas war da.

Das ist auch (mit) ein Grund warum TImage nicht so prima ist - es ist eigentlich nur zur Anzeigen von statischen Bildern. Wenn man aus dem Programm heraus selbst zeichnet, macht man das üblicherweise einfach auf ein TBitmap (welches ja zunächst nirgends angezeigt wird), und kopiert das fix und fertige Bitmap dann als aller letzten Schritt (idealerweise im OnPaint() Ereignis der Painbox) auf eben diese Paintbox.
TImage bringt einen riesen Haufen unnötigen Ballast mit, und an obigem sieht man ja schon, dass eine derartige Nutzung eher eine Vergewaltigung ist
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:36
Ok, soweit klappt das. Aber soweit kam ich auch, wenn ich einfach nur Bild.Picture wiederhergestellt habe, da, wenn man das Rechteck jetzt wieder kleiner ziehen will, das alte nicht verschwindet...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Rechtecke auf TImage "ziehen"

  Alt 1. Feb 2010, 17:48
Hallo,

vielleicht hilft dir meine Demo, die zeigt, wie das Ganze mit Linien funktioniert. Das kannst du auch auf Rechtecke übertragen.
Allerdings gibt es keine "Punkte", an denen du dein Rechteck größer ziehen kannst.

Grüße, Matze
  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 00:13 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