Laden...

ZedGraph: Farbverlauf bei Säulen ("Bar")

Erstellt von bSharp vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.333 Views
B
bSharp Themenstarter:in
48 Beiträge seit 2010
vor 13 Jahren
ZedGraph: Farbverlauf bei Säulen ("Bar")

Hallo,

ich habe Messwerte im Bereich 0-100, welche in einem ZedGraph als Säulendiagramm dargestellt werden sollen.

Nun möchte ich gerne einen unskalierten Farbverlauf OHNE Widerholungen verwenden.

Schaut mal auf das Bild im Anhang:

Hier sieht man an dem Balken ganz rechts, dass der LinearGradientBrush irgendwann widerholt wird. Ein Messwert von 100 sollte aber vollem Grün entsprechen.

Erstmal noch der entsprechende Code:


ColorBlend blend = new ColorBlend(3);
blend.Colors = new Color[] { Color.Red, Color.Yellow, Color.Green };
blend.Positions = new float[] { 0.0f, 0.5f, 1f };
            
LinearGradientBrush lg = new LinearGradientBrush(new Point(0, 0), new Point(0, 230), Color.Black, Color.Black);
            
lg.InterpolationColors = blend;
            
myCurve.Bar.Fill = new Fill(lg, AlignH.Left, AlignV.Bottom);

Die 230 im Konstruktorparameter ist der Wert, ab dem die Widerholung beginnt.
Der Wert müsste genau der Höhe der eigentlichen Zeichenfläche für die Säulen entsprechen, so dass es nicht zu einer Widerholung kommen kann, nur habe ich keinen Weg gefunden diesen Wert zu ermitteln. Wegen Skalierung der Winform kommt ein fest einkodierter Wert sowieso nicht in Frage.

Jemand eine Idee, wie man das Problem löst?

Danke

771 Beiträge seit 2009
vor 13 Jahren

Du meinst "ClientSize.Height" ?

B
bSharp Themenstarter:in
48 Beiträge seit 2010
vor 13 Jahren

Nein, die ClientSize bezieht sich ja auf das ganze zedGraph-Control.
Die Höhe der blau gefärbten Fläche wäre zu ermitteln.
Zu dem zedGraph gehört ja auch noch eine Legende, Achsenbeschriftungen u.s.w.

771 Beiträge seit 2009
vor 13 Jahren

Und "zedGraphControl.GraphPane.Rect.Height"?

B
bSharp Themenstarter:in
48 Beiträge seit 2010
vor 13 Jahren

Leider auch nicht:
"The rectangle, that defines the full area into which all graphics will be rendered".

R
5 Beiträge seit 2010
vor 13 Jahren

GradientByY
Member von ZedGraph.FillType

Zusammenfassung:
Fill with a single solid color based on the Z value of the data.

Hinweise:
The Z value is used to determine the color value based on a gradient brush, and using a data range of ZedGraph.Fill.RangeMin and ZedGraph.Fill.RangeMax. You can create a multicolor range by initializing the ZedGraph.Fill class with your own custom ZedGraph.FillType.Brush object based on a System.Drawing.Drawing2D.ColorBlend. In cases where a data value makes no sense (ZedGraph.PaneBase.Fill, ZedGraph.Legend.Fill, etc.), a default value of 50% of the range is assumed. The default range is 0 to 1.

Wie wäre es damit?

B
bSharp Themenstarter:in
48 Beiträge seit 2010
vor 13 Jahren

Danke aber wie da ja steht: "Fill with a single solid color".

Der Gradient bildet nur die Farbpalette, aus der eine Farbe mit dem Z-Wert ausgewählt wird.

R
5 Beiträge seit 2010
vor 13 Jahren

Danke aber wie da ja steht: "Fill with a single solid color".

Der Gradient bildet nur die Farbpalette, aus der eine Farbe mit dem Z-Wert ausgewählt wird.

Den Hinweis auch gelesen?

The Z value is used to determine the color value based on a gradient brush, and using a data range of ZedGraph.Fill.RangeMin and ZedGraph.Fill.RangeMax. You can create a multicolor range by initializing the ZedGraph.Fill class with your own custom ZedGraph.FillType.Brush object based on a System.Drawing.Drawing2D.ColorBlend.

B
bSharp Themenstarter:in
48 Beiträge seit 2010
vor 13 Jahren

Den Hinweis auch gelesen?

Ja. Du auch?

Der z-Wert selektiert EINE Farbe aus dem Farbverlauf.