AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prbl. mit zeichnen meiner Kompo (Sin,Cos)
Thema durchsuchen
Ansicht
Themen-Optionen

Prbl. mit zeichnen meiner Kompo (Sin,Cos)

Ein Thema von Alex_ITA01 · begonnen am 12. Mai 2005 · letzter Beitrag vom 12. Mai 2005
 
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Prbl. mit zeichnen meiner Kompo (Sin,Cos)

  Alt 12. Mai 2005, 10:37
Hallo erstmal,
ich habe ein komisches Problem und komme da nicht weiter.
Ich hoffe ihr könnt mir helfen...

Folgende Situation:
Ich habe eine eigene Kompo mit einem Kreis in der Mitte. Von diesem Kreis, zeichne ich immer anhand eines Wertes (0-100%) eine Linie vom Mittelpunkt bis zu den Wert in Grad umgerechnet. Z.B. Mein Wert hat 100%, dann zeichne ich einfach eine Linie vom Mittelpunlt bis 0° (also senkrecht nach oben).
Hat mein Wert 25% dann zeichne ich 90° (also waagerecht nach rechts).

Der Wert wird immer vorgegeben...

Jetzt soll der User aber die Möglichkeit haben, die Linie, die ich zeichne selber zu "setzen" (MouseDown) und dementsprechend wird der Wert angepasst.
Ich habe mal eine kleine Grafik angehangen. Die blauen Kreuze kennzeichnen ein möglichen Mausklick. Die gestrichelte Linie in der Mitte stellt eine mögliche Linie vom Mittelpunkt dar.

Das Problem jetzt ist, wenn die Maus irgendwo hin klickt (aber innerhalb meiner Kompo) wie wandle ich den Wert (X,Y) dann so um, damit ich weiß, wohin ich zeichnen muss?

Delphi-Quellcode:
procedure TMeineKompo.Paint;
var
  tmpValue,
  tmpGrad : Double;
  tmpX,
  tmpY : Integer;
begin
  inherited Paint;
  if ComponentState = [csDesigning] then Exit; { Nur zur Laufzeit ausführen }

  tmpValue := Wert; //Enthält mein %Wert
  tmpGrad := (tmpValue * 360) / MaxWert; //Enthält den Maximalwert meines %Wertes (=100)

  tmpX := Round(sin(DegToRad(tmpGrad)) * Radius);
  tmpY := Round(cos(DegToRad(tmpGrad)) * Radius);

  Canvas.MoveTo(Self.Mittelpunkt.X, Self.Mittelpunkt.Y);
  Canvas.LineTo(Self.Mittelpunkt.X + tmpX, Self.Mittelpunkt.Y - tmpY);
end;
Ich hoffe ihr könnt mir irgendwie helfen, die "Umrechnung der Mausposition zu zeichnen"...


MFG Alex
Angehängte Grafiken
Dateityp: bmp kreis_981.bmp (44,6 KB, 16x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
 


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 11:51 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