AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drehpoti zeichnen

Ein Thema von Pinki · begonnen am 30. Mai 2006 · letzter Beitrag vom 31. Mai 2006
 
Benutzerbild von Pinki
Pinki

Registriert seit: 19. Mai 2006
Ort: Mülheim an der Ruhr
49 Beiträge
 
Delphi 5 Enterprise
 
#1

Drehpoti zeichnen

  Alt 30. Mai 2006, 21:41
Hallo,irgendwie habe ich Knoten im Kopf.Ich möchte ein Drehpoti zeichnen.(Image 40 X 40 Pixel dynamisch)
Zu der Grafik:Aussenradius 20.(Skala)
Drehknopfradius 15.
StartWinkel wählbar von 0-2*Pi in Pi/4 Schritten
Drehwinkel wählbar Pi,3*Pi/2 und 2*Pi
Ich möchte jetzt rundum bzw von StartWinkel bis EndeWinkel alle 45° bzw Pi/4 eine rote LED zeichnen auf folgenden Radianen
RadiusX1:= 19 und radius X2 etwa 16.(Siehe Codeausschnitte)
Delphi-Quellcode:
  StartWinkel := GetStartWinkel(pDat^.NullIndex);
  DrehWinkel := GetDrehWinkel(pDat^.DrehIndex);
  EndeWinkel := StartWinkel - DrehWinkel;
  if EndeWinkel < 0 then EndeWinkel := EndeWinkel + (2 * pi);
Hier kommt die LED Grafik:
Delphi-Quellcode:
        RadiusX1 := (Right-Left+1)*19 div 40 ;
        RadiusY1 := (Bottom-Top+1)*19 div 40 ;
        RadiusX2 := (Right-Left+1)*16 div 40 ;
        RadiusY2 := (Bottom-Top+1)*16 div 40 ;
        LEDWinkel := EndeWinkel;
        //Anzahl der LED´s z.B bei 180° sind es 5 Stück
        If DrehWinkel =Pi then n:=5;
        If DrehWinkel =(3*Pi/2) then n:=7;
        If DrehWinkel =(2*Pi) then n:=8;
        {n:=Trunc(DrehWinkel*4/Pi)+1;}
        DeleteObject(SelectObject(DC,OldPen));
        DeleteObject(SelectObject(DC,OldBrush));
        OldPen := SelectObject(DC,GetStockObject(Black_Pen));
        OldBrush := SelectObject(DC,CreateSolidBrush(clRed));

        for j:=1 to n do
      begin
        //Koordinate der LED
        StartX1 := Trunc(Cos(LEDWinkel)*RadiusX1);
        StartY1 := Trunc(Sin(LEDWinkel)*RadiusY1);
        EndeX1 := Trunc(Cos(LEDWinkel)*RadiusX2);
        EndeY1 := Trunc(Sin(LEDWinkel)*RadiusY2);
        //weil Cos von 90° und 270°=0 X Koordinaten um +-1 verschieben um die Mitte
        if (LEDWinkel=Pi/2) or (LEDWinkel=3*Pi/2) then
        begin
        StartX1:=StartX1+1;
        EndeX1:=EndeX1-1;
        end;
        //weil Sin von 0°,180° und 360°=0 Y Koordinaten um +-1 verschiebenum die Mitte
        if (LEDWinkel=0) or (LEDWinkel=Pi) or (LEDWinkel=2*Pi) then
        begin
        StartY1:=StartY1+1;
        EndeY1:=EndeY1-1;
        end;
        Ellipse(DC,ZentrumX+StartX1,ZentrumY-StartY1,ZentrumX+EndeX1,ZentrumY-EndeY1);
        
        LEDWinkel:=LEDWinkel+(Pi/4);//Winkel um 45° verschieben
        if LEDWinkel>(2*Pi) then LEDWinkel:=LEDWinkel-(2*Pi);
      end;
Die LED bei 0,90°,180° werden nicht dargestellt .Warum???

Grüss
Pinki
*** Cogito ergo sum ***
  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 23:57 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