gpt4 book ai didi

c# - 如何更改我的图表以使其看起来像列渐变填充样式?

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:47 24 4
gpt4 key购买 nike

这是我在构造函数中所做的:

drawPoints.Clear();
paintToCalaculate = false;
chart1.Invalidate();
Series S0 = chart1.Series[0];
S0.ChartType = SeriesChartType.Column;
S0.IsValueShownAsLabel = true;
chart1.Series["Series1"]["PixelPointWidth"] = "0.6";
chart1.Series["Series1"]["DrawingStyle"] = "Cylinder";
S0.Color = Color.Transparent;
S0.LegendText = "";
area.BackColor = Color.White;
area.BackSecondaryColor = Color.LightSteelBlue;
area.BackGradientStyle = GradientStyle.DiagonalRight;
area = chart1.ChartAreas[0];
chart1.Series["Series1"].Points.AddXY(10, 10);
area.AxisX.Minimum = 1;
area.AxisX.Maximum = 30;
area.AxisY.Minimum = 1;
area.AxisY.Maximum = 120;
area.AxisX.MajorGrid.LineColor = Color.LightSlateGray;
area.AxisY.MajorGrid.LineColor = Color.LightSlateGray;

问题是我正在使用图表绘制事件来绘制点和线:

Pen pen = new Pen(Color.Blue, 2.5f);
SolidBrush myBrush = new SolidBrush(Color.Red);
private void chart1_Paint(object sender, PaintEventArgs e)
{
if (paintToCalaculate)
{
Series s = chart1.Series.FindByName("dummy");
if (s == null) s = chart1.Series.Add("dummy");
drawPoints.Clear();
s.Points.Clear();
foreach (PointF p in valuePoints)
{
s.Points.AddXY(p.X, p.Y);
DataPoint pt = s.Points[0];
double x = chart1.ChartAreas[0].AxisX.ValueToPixelPosition(pt.XValue);
double y = chart1.ChartAreas[0].AxisY.ValueToPixelPosition(pt.YValues[0]);
drawPoints.Add(new Point((int)x, (int)y));
s.Points.Clear();
}
paintToCalaculate = false;
chart1.Series.Remove(s);
}

foreach (Point p in drawPoints)
{
e.Graphics.FillEllipse(Brushes.Red, p.X - 2, p.Y - 2, 4, 4);
}

if (drawPoints.Count > 1)
{
e.Graphics.DrawLines(pen, drawPoints.ToArray());
}
}

我希望它看起来像这样:

Chart

它应该像示例中那样。但由于我使用的是绘画事件,所以这种方式可能是不可能的。

编辑尝试了这个解决方案 我在名为 chart2 的 form1 设计器中为测试添加了一个新的图表控件。然后在构造函数中我做了:

chart2.Titles.Add(("Introducing Chart Controls"));

ChartArea chartarea2 = new ChartArea("Main");
chart2.ChartAreas.Add(chartarea2);

Series seriesColumns = new Series("RandomColumns");
seriesColumns.Color = Color.Blue;
chart2.Series.Add(seriesColumns);
Random rnd = new Random(10);
for (int i = 0; i < 10; i++)
{
seriesColumns.Points.Add((rnd.Next(100)));
}
DataPoint dp = new DataPoint(seriesColumns);
dp.Color = Color.Red;
dp.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.LeftRight;
seriesColumns.Points.Add(dp);

但没有淡入/淡出颜色变化。什么都没发生。

这是图表 2 的样子:

chart2

最佳答案

要获得渐变效果,您不一定非要使用 Paint 事件。 DataPoint 具有 BackGradientStyle 属性,可以自动为您生成渐变。它将使用 DataPoint 的颜色。您可以像下面的示例一样设置它:

var dp = new DataPoint(8D, 12D);
dp.Color = Color.Red;
dp.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.LeftRight;
var series = this.chart1.Series[0];
series.Points.Add(dp);

这里的渐变正在淡出。如果您希望它传递到另一种颜色,请设置 BackSecondaryColor 属性。

dp.BackSecondaryColor = Color.Green;

关于c# - 如何更改我的图表以使其看起来像列渐变填充样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com