Autor Beitrag
Cyborgmillenium
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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



BeitragVerfasst: Do 26.09.02 09:51 
Titel: mathe?
hmm als schüler net wissen wie ma a ellipse berechnet...
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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? :twisted:

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



BeitragVerfasst: Do 26.09.02 11:18 
Titel: :-)
1.) bin i Schüler?
2.)wozu hat ma mathebücher?


gruß
weiti
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 27.09.02 15:05 
Hab es geschafft. Das mit dem Strecken hat funktioniert.

Danke
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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 :) )