UFButton-Klasse

Zur Anzeige der Buttons verwende ich ein eigenes UserControl, welches auf die Bedürfnisse des Programms zugeschnitten ist. Was mir wichtig war:


Funktionsweise der Darstellung

Das Malen des Buttons innerhalb der Klasse funktioniert folgendermaßen: Das eigentliche Bild zur Anzeige setzt sich aus verschiedenen Teilen zusammen. Dieses Zusammensetzen geschieht während der Laufzeit, wenn der Button das erste Mal angezeigt werden soll. In der Klasse enthaltene Einzelgrafiken für die Ecken und Linien für die Seitenteile werden auf einem Image zusammen plaziert. Das angegebene Symbol wird zentriert auf den Button gemalt. Für die Darstellung des inaktiven, des gedrückten und des gesperrten (disabled) Buttons wird jeweils ein Image-Objekt vorberechnet, wobei dann je nach Zustand entsprechend das richtige angezeigt wird. Die Einzelgrafiken für die abgerundeten Ecken sind notwendig, weil im Compact Framework kein Malen von abgerundeten Rechtecken oder Kreisteilen unterstützt wird.


Konfiguration eines Buttons

Zur Konfiguration eines Buttons werden folgende Properties verwendet:


Beispiel einer Oberfläche mit zusammengesetzten Buttons

EdgeBitmask = 3
NoLineBitmaskTLRB = 1
ThinLineBitmaskTLRB = 0
EdgeBitmask = 5
NoLineBitmaskTLRB = 2
ThinLineBitmaskTLRB = 0
EdgeBitmask = 10
NoLineBitmaskTLRB = 4
ThinLineBitmaskTLRB = 0
EdgeBitmask = 12
NoLineBitmaskTLRB = 8
ThinLineBitmaskTLRB = 0
EdgeBitmask = 15
NoLineBitmaskTLRB = 0
ThinLineBitmaskTLRB = 0
EdgeBitmask = 3
NoLineBitmaskTLRB = 0
ThinLineBitmaskTLRB = 1
EdgeBitmask = 12
NoLineBitmaskTLRB = 0
ThinLineBitmaskTLRB = 8

Die Oberfläche sieht zusammengesetzt folgendermaßen aus (durch Skalierung auf 50% entstanden hier unschöne Pixel, eigentlich ist alles doppelt so groß, da eine 640er Auflösung auf dem Pocket PC verwendet wird):