A
allo Community,
Ich möchte gern so eine Art Schaltuhr zeichnen lassen mit C++
und C++ Borland 2007.
Ziel ist es, eine Uhr darzustellen von 0 -12 Uhr oder 12-24 Uhr je nachdem wieviel Uhr es gerade ist.
Und dann erhält man für diesen Zeitraum Schlatungen, wann sie an und wann sie aus geht.
So ich habe schon Die Uhr und bin dabei die Pixel zu berechnen um dann eben diesen bestimmten Bereich von "Ein" bis "Aus" farbig als Kuchenstück zu zeichnen.
Ich nutze dazu folgenden Code, wobei dieser nur manchmal stimmt
und manchmal total falsch gezeichnet wird.
Kann mir bitte jemand helfen?
Ich glaube das es an den Formeln liegt...?
//Maximum ist entweder 12 oder 24 , je nachdem ob Nachmittag oder vormittags
//Minimum entweder 0 oder 12
//time = die Einschaltzeit, also sowas wie 6Uhr morgens
//timeAus = die Ausschaltzeit, sowas wie 7Uhr morgens
//time und timeAus erhalte ich in einem TDateTime->String
//diesen zerlege ich in Stunden und minuten und schreib ihn in
//timeAus = timeAus + StrToFloat(wsWork)
//die variable
Differenz = Maximum - Minimum;
maxWinkel = 360;
minWinkel = 0;
Winkel = Cos(minWinkel/maxWinkel);
Winkel = Winkel * (360/3.14159265);
Ergebnis = ((time - Minimum) /Differenz) * ((360-Winkel) - Winkel) + Winkel;
ErgebnisAus = ((timeAus - Minimum) /Differenz) * ((360-Winkel) - Winkel) + Winkel;
//phi in Bogenmaß umrechnen
Ergebnis = Ergebnis * (3.14159265/360);
ErgebnisAus = ErgebnisAus * (3.14159265/360);
//Punkt auf Kreisbahn = Xmittelpunkt + Radius * cos(Bogenmaß phi)
xEin = (x2-x1) + (y2-y1) * Cos(Ergebnis);
xEin = (x2-x1) - xEin; //Darstellung umkehren//Spiegeln
yEin = (y2-y1) + (x2-x1) * Sin(Ergebnis);
//Punkt auf Kreisbahn = Xmittelpunkt + Radius * cos(Bogenmaß phi)
xAus = (x2-x1) + (y2-y1) * Cos(ErgebnisAus);
yAus = (y2-y1) + (x2-x1) * Sin(ErgebnisAus);
//Zeichnen
Image1->Picture->Bitmap->Canvas->Brush->Color = clGreen;
Image1->Picture->Bitmap->Canvas->Pie(x1,y1,x2,y2,xEin,yEin,xAus,yAus);
Image1->Picture->Bitmap->Canvas->Brush->Color = clWhite;
st es überhaupt möglich ne einheitliche berechnung zu machen, um das tortenstück zeichnen zu könnnen?
oder muss man immer abfragen für Sonderfälle machen , wie genau 6 Uhr oder ob es größer oder kleiner 6 Uhr ist, da man ja indiesem Fall beim Zeichnen einmal vom Mittelpunkt addieren muss und das andere Mal subtrahieren?!1
Danke
Alex