Autor |
Beitrag |
Cyborgmillenium
      
Beiträge: 25
|
Verfasst: Mo 23.09.02 13:44
Hallo,
ich habe ein Shape als Elipse. Dieses Shape benutze ich als Knopf. Jetzt ist es so, das das Shape aber auch auf den Mausklick reagiert, auch wenn ich neben die Elipse klicke. Das liegt daran, das es nur wie ein Shape aussieht, aber noch der Viereckige Kasten drumrum ist.
Kann mir wer sagen, wie ich es Programmiere, das der Klick nur ausgeführt wird, wenn ich wirklich in die elipse klicke?
Danke
Bastian
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Mo 23.09.02 14:10
ja, du musst halt beim onclick ereignis abfragen, ob du wirklich innerhalb deines Shapes bist. Das machst du über cursorpos. Und dann vergleichst du die koordinaten mit denen deines Shapen und voila, fertig bist du.
Musst halt mal schauen wie das mit den mathematischen funktionen aussieht. Es gibt funktionen, mit denen du berechnest, ob ein bunkt in einem zweidimensionalen raum innerhalb einer zweidimensionalen ebene liegt.
Bin aber gerade auf der arbeit und kann nicht nachschauen.
Gruß
Ken
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Mo 23.09.02 18:00
du müsstest die Entfernung von Cursorpos zum Zentrum der Ellipse berechnen (Phytagoras), und dann den x/oder y-Wert etwas strecken, und dann mit dem Radius der Ellipse vergleichen(dünnste/dickste stelle)
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Cyborgmillenium 
      
Beiträge: 25
|
Verfasst: Mo 23.09.02 19:50
DAs is mir schon klar. Mit nem Kreis hab ich es ja auch schon. Nur bei ner Elipse hab ich keine Ahnung von der Formel.
Vielleicht kann mir ja mal jemand ein Beispiel posten.
Danke
Bastian
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Di 24.09.02 14:33
strecken!!!, ich würde die x-Werte im verhältniss zum Ellipsenzentrum strecken(oder schrumpfen(egal);
dann kanst du es genauso machen wie bei einem Kreis
Wenn du es nicht schaffst mach ich dir mal ein Beispiel, aber die nächsten Tage hab ich dazu leider keine Zeit.
Mathias
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.09.02 14:50
Vielleicht hilft dir diese API weiter:
Zitat: |
PtInRegion
The PtInRegion function determines whether the specified point is inside the specified region.
|
|
|
Cyborgmillenium 
      
Beiträge: 25
|
Verfasst: Mi 25.09.02 13:19
Mathias, das wäre super nett wenn du ein Beispiel machen könntest.
Ich kann deinem Vorschlag nämlich nicht so ganz folgen.
Meine E-Mail is: BastianBreidenbach@web.de
Lass die ruhig Zeit, is eh nicht so dringend.
Schonmal danke.
Bastian
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mi 25.09.02 13:38
Hi
ich hätt noch nen unkonventionellen Vorschlag. Das Shape ist doch einfarbig. Warum checkst du nicht welche Farbe der Punkt an den Mauskoordinaten hat. Wenns die Farbe der Ellipse ist, dann ist der Mauszeiger innerhalb.
Ich weiss, ist nicht ganz wasserdicht, aber einfach.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
Cyborgmillenium 
      
Beiträge: 25
|
Verfasst: Mi 25.09.02 22:10
Das habe ich schon gemacht. Aber das is ne Aufgabe in der Schule und der Lehrer will es halt berechnet haben, leider.
Aber trotzdem Danke.
Bastian
|
|
weiti
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 26.09.02 09:51
Titel: mathe?
hmm als schüler net wissen wie ma a ellipse berechnet...
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Do 26.09.02 11:12
Titel: Re: mathe?
weiti hat folgendes geschrieben: | hmm als schüler net wissen wie ma a ellipse berechnet... |
Um ehrlich zu sein muss ich hier auch passen. Bei nem Kreis wärs kein Prob. Aber mal die Gegenfrage: Weisst du's?
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
weiti
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 26.09.02 11:18
Titel: :-)
1.) bin i Schüler?
2.)wozu hat ma mathebücher?
gruß
weiti
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Do 26.09.02 17:34
ich hab doch schon die Lösung gesgt: so weit strecken bis es ein Kreis ist!(die Vergleichskoordinaten des Mauszeigers relativ zum Ellipsenmittelpunkt natürlich!!!) wenns keiner zam bringt werde ich doch nochmal QT schreiben müssen...
MathiasH
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Cyborgmillenium 
      
Beiträge: 25
|
Verfasst: Do 26.09.02 18:34
@ Weiti: Unser Lehrer hat da was an die Tafel gemacht, aber das is mir zu hoch.
@ Mathias: Ich werde das jetzt mal versuchen, wäre aber trotzdem nett wenn du ein Beispiel machen könntest.
Danke
Bastian
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Fr 27.09.02 13:43
Hi Cyborgmillenium,
such mal nach der Komponente TEzRgnBnt www.delphi-treff.de/...ten/index.php4?kat=4. Schau die bessonders die exportierte Funktion CropWindow(Handle,Picture); an. Das wäre die vernünftigste Lösung für solche ein Problem.
|
|
Cyborgmillenium 
      
Beiträge: 25
|
Verfasst: Fr 27.09.02 15:05
Hab es geschafft. Das mit dem Strecken hat funktioniert.
Danke
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Sa 28.09.02 04:02
Hi,
Also... es gibt da noch ne super easy sache um rauszubekommen ob man z.B. auf den weißen kreis klickt oder auf das graue nichts..
Wie? So:
Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Shape1MouseDown([...]); begin if Shape1.Canvas.Pixels[X,Y]=clWhite then //Das was halt passieren soll end; |
Au'revoir,
Aya
PS: Andere möglichkeit wäre der Shape eine Elliptische Region zuzuweisen, oder per Ellipsengleichung berechnen ob man innerhalb des Kreises geklickt hat.
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Sa 28.09.02 04:11
Ach ja, und für die, die's interressiert...
Die Ellipsengleichung geht so (um einen punkt der ellipse zu errechnen):
wi = 360 / EckenDerEllipse
w = (pi / 180) * (wi * Ecke - (wi / 2))
X:=Ellipse.Left / 2 + (Ellipse.Right / 2 + cos(w) * ((Ellipse.Right - Ellipse.Left) / 2));
Y:=Ellipse.Top / 2 + (Ellipse.Bottom / 2 + sin(w) * ((Ellipse.Bottom-Ellipse.Top) / 2));
EckenDerEllipse =Die ecken halt... denn ne Ellipse ist nichts anderes als ein Vieleck mit wahnsinnig vielen ecken
Ecke = Die Ecke von der man die Koordinaten errechnen will (z.B. die 3te Ecke, wobei man bei 0° anfängt zu zählen)
Ellipse.Left/Right/Top/Bottom = Die größe der Ellipse halt... z.B. ein Kreis mit Radius = 5 hätte bei allen 4 werten 5
So, und nu nich noch nachfragen, sondern einfach ausprobieren und ein wenig drüber nachdenken... ist ganz einfach  (Ich hab damit schon soviele dinge errechnet... unter anderem z.B. einen Stern.. versucht's mal  )
Au'revoir,
Aya
PS: Ihr könnt euch ja mal den Koshigaya GraphicShop herunterladen... das programm ist zwar noch laange nicht fertig und hat sicher viele fehler.... aber, ALLES was es kann ist ohne jegliche fremdkomponenten gemacht und NUR mit Canvas realisiert.
(Den stern gibt's wenn man länger auf Shapes drückt  )
|
|