72 lines
2.2 KiB
C#
72 lines
2.2 KiB
C#
using System;
|
|
using CPF.Drawing;
|
|
using CPF.ReoGrid.Graphics;
|
|
using CPF.ReoGrid.Rendering;
|
|
|
|
namespace CPF.ReoGrid.Chart
|
|
{
|
|
public class ColumnChartPlotView : ChartPlotView
|
|
{
|
|
public ColumnChartPlotView(AxisChart chart) : base(chart)
|
|
{
|
|
}
|
|
|
|
protected override void OnPaint(RDrawingContext dc)
|
|
{
|
|
base.OnPaint(dc);
|
|
Rect clientBounds = this.ClientBounds;
|
|
double num = (double)clientBounds.Width * 0.7;
|
|
bool flag = num < 20.0;
|
|
if (!flag)
|
|
{
|
|
AxisChart axisChart = base.Chart as AxisChart;
|
|
bool flag2 = axisChart == null;
|
|
if (!flag2)
|
|
{
|
|
WorksheetChartDataSource dataSource = base.Chart.DataSource;
|
|
int serialCount = dataSource.SerialCount;
|
|
int categoryCount = dataSource.CategoryCount;
|
|
double num2 = num / (double)categoryCount;
|
|
double num3 = ((double)clientBounds.Width - num) / (double)(categoryCount + 1);
|
|
double num4 = num2 / (double)serialCount;
|
|
AxisDataInfo primaryAxisInfo = axisChart.PrimaryAxisInfo;
|
|
double num5 = num3;
|
|
IGraphics graphics = dc.Graphics;
|
|
for (int i = 0; i < categoryCount; i++)
|
|
{
|
|
for (int j = 0; j < dataSource.SerialCount; j++)
|
|
{
|
|
PlotPointColumn plotPointColumn = axisChart.PlotDataPoints[j][i];
|
|
bool hasValue = plotPointColumn.hasValue;
|
|
if (hasValue)
|
|
{
|
|
IDataSerialStyle dataSerialStyle = axisChart.DataSerialStyles[j];
|
|
bool flag3 = plotPointColumn.value > 0f;
|
|
if (flag3)
|
|
{
|
|
IGraphics graphics2 = graphics;
|
|
float num6 = (float)num5;
|
|
float num7 = axisChart.ZeroHeight - plotPointColumn.value;
|
|
float num8 = (float)(num4 - 1.0);
|
|
graphics2.DrawAndFillRectangle(new Rect(ref num6, ref num7, ref num8, ref plotPointColumn.value), dataSerialStyle.LineColor, dataSerialStyle.FillColor);
|
|
}
|
|
else
|
|
{
|
|
IGraphics graphics3 = graphics;
|
|
float num6 = (float)num5;
|
|
float num7 = axisChart.ZeroHeight;
|
|
float num8 = (float)(num4 - 1.0);
|
|
float num9 = -plotPointColumn.value;
|
|
graphics3.DrawAndFillRectangle(new Rect(ref num6, ref num7, ref num8, ref num9), dataSerialStyle.LineColor, dataSerialStyle.FillColor);
|
|
}
|
|
}
|
|
num5 += num4;
|
|
}
|
|
num5 += num3;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|