Seite 1 von 1
AngleGadget - "Canvas"-Update + mehr Funktionen
Verfasst: 01.12.2009 04:06
von STARGÅTE
UPDATE HIER
Tachchen,
passend zum PB 4.40 Final erscheinen, möchte ich hier mein AngleGadget vorstellen:
AngleGadget.pb - Quellcode mit Beispiel.
(Link veraltet)
wenn man es nicht für Windows nutzt, müssen GetSysColor_() ersetzt werden!)
AngleGadget(Gadget, x, y, Width, Ticks, Flags#False)
- Gadget - kann eine beliebige Gadget-Nummer sein oder #PB_any]
- x, y - Position des Gadgets
- Width - Breite (und damit auch Höhe) des Gadgets (also nur Quadratisch)
- Ticks - "Einrast"-Stücke des Vollwinkels 360°
- Flags - kann 0 oder #PB_Angle_Ticks, welches dann an den Ticks eine Linie darstellt.
Die Naden kann nur mit Klick bewegt werden (kein Ziehen!).
Wird ein Gadget mit 4 Ticks erstellt, so gibt es nur 0°, 90°, 180°, 270°. 36 Ticks wären 360° in 10° Schritten.
Auch nur diese Winkel werden einrasten.
GetAngleGadgetState(Gadget) und SetAngleGadgetState(Gadget, State.f) können benutzt werden um den Winkel aus- oder einzulesen. Auch hier gilt das z.B. der Winkel 30° bei einem Gadget mit 4 Ticks zu 0° wird ...
Würde mich freue wenn der eine oder andere es austestet, und ggf. Verbesserungen hat oder Wünsche.
UPDATE HIER
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 02.12.2009 12:38
von Rokur
Sehr schön, gefällt mir gut.
Was mir aufgefallen ist:
Bei großen Winkelangaben (>13stellig) wird von dem Zeiger nur noch eine kurze weiße Linie gezeichnet.
Vorschläge für zukünftige Versionen:
- Read-only Modus, wenn man das Gadget nur zur Anzeige verwenden möchte.
- Zeiger mit der Maus ziehen möglich
- Unterstützung für eigene Zeiger-Images / Hintergrundbilder
Mit eigenen Images und einer Ziehmöglichkeit mit der Maus könnte man dein Gadget dann für optisch schöne Drehregler aller Art einsetzen.
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 02.12.2009 14:30
von NicTheQuick
Ohne es zu testen hätte ich auch noch zwei Verbesserungsmöglichkeiten:
- Man könnte einen Start- und Endwert setzen, sodass man nur Winkel zwischen start und ende einstellen kann.
- Außerdem noch ein optisches Start und Ende. Das heißt bei 9 Uhr wäre zum Beispiel -90° (start) und 3 Uhr wäre dann 90° (ende).
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 02.12.2009 14:55
von STARGÅTE
Bei großen Winkelangaben (>13stellig) wird von dem Zeiger nur noch eine kurze weiße Linie gezeichnet.
Jo weils dann Unendlich ist ^^, korrigier ich noch ...
Vorschläge für zukünftige Versionen:
- Read-only Modus, wenn man das Gadget nur zur Anzeige verwenden möchte.
- Zeiger mit der Maus ziehen möglich
- Unterstützung für eigene Zeiger-Images / Hintergrundbilder
- Read-only wird geben, geht klar, auch das ein gadget Aktiv sein kann und man mit den Tasten steuern kann.
- Das ich den Zeiger mit der Maus zeihen kann, ist nur schwer möglich, weil das Gadget ein Image ist und bei einer daueraktuallisierung flimmern würde ... mal sehen was ich da machen kann.
- Eigene Zeiger sind unmöglich, weil diese Bilder ja gedreht werden müssten und es gibt noch kein RotateImage für irgendwelche Winkel.
- Man könnte einen Start- und Endwert setzen, sodass man nur Winkel zwischen start und ende einstellen kann.
Hm jo wäre möglich, nur wie sollen das nicht erreichbare Winkel aussehen ? grau ? mal sehn ...
Außerdem noch ein optisches Start und Ende. Das heißt bei 9 Uhr wäre zum Beispiel -90° (start) und 3 Uhr wäre dann 90° (ende).
Du meinst das man das Gadget an sich dreht, sodass 0° nicht immer nach Rechts zeigen ...
Bei diesen ganzen Flags muss ich mal gucken wie ich die Parameter anordne
Oder ob ich n art SetAngleGadgetAttribute(#Gadget, Attribut, Wert) mache, sodass man dann dort alles detailiert einstellt.
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 02.12.2009 15:41
von Crawler
Bin zwar noch nicht dazu gekommen, das im Einzelnen zu testen, will aber trotzdem meinen Senf abgeben:
Schönes Gadget! Die Einstellung mit der Maus würde ich so realisieren, dass der Zeiger nur bei den Ticks einrasten kann, daher muss auch nicht ständig der Zeiger neu gezeichnet werden. Wenn die Ticks beispielsweise automatisch im 10°-Raster angeordnet werden könnten, ließe sich der Regler schon gut genug bedienen, fürs Feintuning täte es immer noch die manuelle Eingabemethode.
Sympatisch wäre mir auch die die Variante, wie sie ein herkömmliches Poti bietet: eine Standardabdeckung der Regelstrecke nur über 270°, könnte man ja per Flag ändern.
Und zu guter letzt fänd auch ich alternative Zeigerformen interessant, im einfachsten Fall eine Art Drehknopf mit Positionsmarkierung (Strich oder Punkt).
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 02.12.2009 18:57
von Little John
Hallo Stargate,
ich brauche es im Moment nicht, gefällt mir aber gut!
Ich finde, die Anzeige auf dem Gadget sollte eine Nulllinie haben:
Position am besten vom Benutzer frei bestimmbar, default evtl. bei 0 Uhr?
Wirklich tolle Idee.
Gruß, Little John
Re: AngleGadget - "Kreis"-TrackBar für Winkel
Verfasst: 06.07.2011 14:23
von STARGÅTE
Wie angekündigt, möchte ich nun die neue Version des AngleGadgets vorstellen, welche mit dem neuen (4.60) CanvasGadget arbeitet.
Im zuge des Updates bietet das gadget nun auch noch eine Reihe weiterer Funktionen:
- Orientierung
- offene oder geschlossne Skalar
- Tastatur- und Mausfunktionen schon integriert (Fokus, Tab, Hoch, Runter, Mausrad, ...)
- frei definierbare Beschriftung
- automatische Ausrichtung (auch mit Beschriftung) zur optimalen Platzausnutzung
Direkt-Link:
AngleGadget2.pb
Hier ein Beispiel:
Syntax:
Der Syntax ist analgo um TrackBarGadget aufgebaut, mit
Min und
Max kann das Intervall für
State festgelegt werden.
AngleGadget(
#Gadget, X, Y, Width, Height, Min, Max)
Zusätzlich gibt es verschiedene Attribute für das Gadget welche mit
SetAngleGadgetAttribute(
#Gadget, Attribute, Value)
geändert werden können:
Attribute =
- #AngleGadget_NullState
Legt fest, in welchem Winkel sich der minimale State-Wert befindet.
Value = Winkel in Grad
- #AngleGadget_Length
Legt fest, wie lang (in Grad) die Skalar ist. 360° entsprechen einem Vollkreis, sodass Min=Max ist.
Value = Länge in Grad
- #AngleGadget_MinorTicks
Legt fest, wie viele kleine Striche gemacht werden sollen. Standard ist die Anzahl der möglichen State-Werte
- #AngleGadget_MajorTicks
Legt fest, wie viele große Striche gemacht werden sollen. Standard ist einer bzw. zwei bei Min und Max
- #AngleGadget_MajorLabel
Definiert die für die Beschriftung der großen Striche verwendetet Prozedur (Callback).
Aufbau der Prozedur: Prototype.s AngleGadgetLabel(State.i)