Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Shape nutzen wie in IrfanView (https://www.delphipraxis.net/66551-shape-nutzen-wie-irfanview.html)

moelski 31. Mär 2006 10:53


Shape nutzen wie in IrfanView
 
Moin !

Ich hät da ein kleines Problem und vielleicht hat jemand ein paar Tips für mich :cyclops:

Also, in meiner Anwendung Kalibriere ich eine Karte. Die Karte wird in ein TImage geladen. Soweit so gut. Nun würde ich aber die Karte gerne in gewissen Massen anpassen können. Eine Anpassung ist z.B. das Zuschneiden auf eine bestimmte Größe.
Meine Idee war, dass wie in IrfanView zu lösen. Dort kann man in der Grafik einen Rahmen aufziehen. Mit diesem Rahmen kann ich nun so allerhand anstellen.
- Gehe ich mit der Maus auf die Striche des Rahmen, kann ich dessen Größe anpassen
- Rechtsklick im Rahmen und gedrückt halten der rechten Maustaste -> Verschieben des kompletten Rahmens.
- Linksklick in den Rahmen -> Zoom

Das sind mal so die wichtigsten Funktionen die ich auch bräuchte. Meine Idee war nun, ein TSHape zu nutzen. Das erstellen über dem Image ist garnichtmal das Problem. Aber dann fangen die Probleme an. Es gibt dort nicht sowas wie "MouseOver". Somit wird auch der Cursor nicht angepasst. Das mit dem Verschieben und Zoom kriege ich ja noch hin, denn wenn ich klicke kann ich ja über die Events abfangen ob ich gerade das Shape bediene.
Was ich im Prinzip bräuchte wäre eine Grössenänderung wie sie Delphi zur Entwicklungszeit bietet. Wenn ich dort ein Shape plaziere, dann ändert sich der Cursor ja auch nur zu den Pfeilen zum Größeändern, wenn ich auf einem der 8 kleinen Quadrate bin. Sowas suche ich nun auch. Nur das es bei mir eben generall auf den Kanten des Shapes gehen sollte.

Ich hoffe ich habe mich verständlich ausgedrückt :roteyes:
Falls nicht, einfach mal kurz bei IrvanView guggn wie die das dort mit diesem Rahmen gemacht ham. :wink:

Es muss auch nicht unbedingt ein Shape sein. Aber ich wüsste nicht was ich sonst nehmen könnt.

Der_Unwissende 31. Mär 2006 14:13

Re: Shape nutzen wie in IrfanView
 
Hi,
ich bleib der Einfachheit einfach mal bei der Lösung mit deinem Shape (über gute Alternativen möchte ich gerade nur nicht nachdenken ;-))
Ich denke, dass du eigentlich schon alles hast was du benötigst, OnMouseDown, -Up, -Move. Der Rest ist halt ein wenig Handarbeit. Du kannst einfach im OnMouseMove die Position überprüfen. entspricht die den Koordinaten des Rahmen, kannst du dann deinen Cursor ändern und ein entsprechendes Flag (als Beispiel) setzen. Gleiches gilt wenn du dich irgendwo im Rahmen befindest.
Sinnvoll ist es hier natürlich nicht in jedem MouseMove sinnlos die Cursor zu ändern (kostet auch nur unnötig Rechenzeit), du solltest halt nur auf Änderungen des Flags reagieren (also wenn der Rahmen erreicht ist oder eben nicht mehr).

Im MouseDown wertest du dann einfach dein Flag zusätzlich aus (also veränderst die Größe, verschiebst den Ausschnitt, etc). Ja, das war's doch schon?

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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