Jr. Member
Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
MAKE_STRINGs haben eine leicht andere Reihenfolge in den ersten Parametern (eigentlich nicht, die Resource id fehlt halt).
Du müsstest den zweiten und dritten Parameter tauschen, z.B.
...
MAKE_STRING( vsi_string,
&vsi_plist1,
NULL,
IMAGE_USE_ERASE | IMAGE_USE_BRIGHT | IMAGE_USE_TRANSPARENCY,
0,
50, 35,
60, 20,
4,
MODULE_VAR_NONE,
MODULE_VAR_NONE,
MODULE_VAR_NONE,
RGB(255,128,0),
RGB(0,0,0),
RGB(92,92,92),
GAUGE_FONT_DEFAULT,
GAUGE_WEIGHT_DEFAULT,
GAUGE_CHARSET,
0,
DT_CENTER | DT_VCENTER | DT_SINGLELINE,
NULL,
vsi_string_cb )
...
Ansonsten sieht ja alles gut aus. Ob man noch weiter optimiert ist Geschmackssache: falls Du dir Arbeit ersparen willst, lass den gauge callback weg und ändere die nonlinearity table zu:
NONLINEARITY vsi_needle_nl[] =
{
{{112, 64}, -8000, 0},
{{112, 64}, -6000, 0},
{{104, 85}, -4000, 0},
{{75, 105}, -2000, 0},
{{35, 105 }, -1000, 0},
{{8, 58}, 0, 0},
{{35, 11}, 1000, 0},
{{75, 12}, 2000, 0},
{{104, 31}, 4000, 0},
{{112, 51}, 6000, 0},
{{112, 51}, 8000, 0}
};
dann brauchst Du auch keine min-max Abfrage im needle callback mehr. Welche Zahlen (-8000,8000) da drin stehen ist wurscht, solange die ersten und die letzten beiden Einträge die selben Koordianten haben, und values außerhalb des Bereichs. Ist man nämlich außerhalb der Tabelle wird mit den Randwerten weiter interpoliert, geben die einen Differenzwinkel von 0 (gleiche Koordinaten) hat man da einen effektiven Stop eingebaut.
Arne Bartels
|