Frage

eine Gruppe von Elementen in der Verarbeitung, ich wollte ein einheitliches Bild des Status der Gruppe angezeigt werden, so dass ich im wesentlichen aus einem Gitter aus einer Reihe von Fortschrittsbalken mit transparentem Hintergrund und verschiedene farbigen foregrounds alle auf der gleiche Zelle.

Ich laufe in einige Transparenz Artefakte (lila bar unter dem grünen tatsächlich lila, und manchmal zieht es über die Spitze, etc) und es scheint nur ein bisschen verschwenderisch. So entschied ich mich, meine eigenen zu machen, aber jetzt habe ich ein bisschen Lähmung bekam, wie man es tun. Habe ich den DrawingContext in Framework des OnRender verwenden, oder gibt es etwas einfacher? Gibt es eine Reihe von allgemeinen Regeln, wenn es darum geht, Ihre eigene Kontrolle zu machen?

ich zu einem Kreisdiagramm grübelte Schale da diese sind leicht zu bekommen, aber es ist höchste Zeit, ich habe etwas nicht off-the-shelf.

Danke!

War es hilfreich?

Lösung

Ich bin mir nicht ganz sicher, wie Sie die progressbar beabsichtigen unterschiedliche Fortschritte zu kombinieren, aber wenn die am weitesten entlangen Fortschritt sagen ist an der Unterseite des Z-Index und die am wenigsten entlang Fortschritt an der Spitze ist, dann würde ich tun etwas auf den Linien folgt aus:

1) Ich würde wahrscheinlich eine Benutzersteuerung für diese neue progresbar erstellen.

2) Es wäre eine Eigenschaft hat NumberOfProgresses genannt, dass gebunden mit einem Array mit Status der fortschreitet.

3) Jeder Fortschritt durch einen Grenzpunkt dargestellt werden würde (oder vielleicht etwas besser geeignet die visuelle Struktur) auf, weil es ein einfaches WPF-Steuerelement mit einer Hintergrund-Eigenschaft ist. Der Hintergrund Eigenschaft würde schön eine Suche Fortschritt Stil und der Fortschritt Farbe eingestellt werden kann, im Stil der Grenze des BorderBrush Eigentum zu sagen gebunden. Macht es einfach, die Farbe des Fortschritts zu setzen.

4), um die Benutzersteuerung würde eine Methode Update hat, die den Prozentwert und den Index des Fortschritts in der Anordnung als Parameter nimmt.

5) Wie Fortschritte aktualisiert werden, können Sie entweder, berechnen nur die entsprechende Breite (Benutzerkontrolle tatsächliche Breite * Prozentsatz) für die Grenze und mit dem Z-Index spielen, um es an dem oben / unten, oder stapeln die Grenzen zu bekommen angezeigt horizontaly, stellen Sie den dest entlang Fortschritts als erstes, dann für den Rest der Fortschritte Sie vorherige Fortschritte Längen zu subtrahieren haben würden, um den gleichen Effekt zu erhalten.

Auf diese Weise gäbe es keine Transparenz induzierte Artefakte und kein OnRender sein () ... Wohlgemerkt, in WPF sollte es keinen Grund zu Chaos mit OnRender dies und OnRender, dass, wie es in WinForms mit OnPaint erforderlich war. Nur die Elemente über den Code ein, um den Blick zu erhalten Sie wollen, und lassen Sie WPF tun es machen;)

Ich kann allerdings ein Problem mit dieser Benutzerkontrolle vorstellen. Sie müssten Feedback an den Benutzer liefern, welche Farbe Fortschritt, zu dem gehört. Aber das würden Sie wahrscheinlich zurücknehmen zu Platz, was bedeutet, es ist besser / einfacher nur angezeigt werden mehrere Fortschrittsbalken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top