1. 创建一位图
int bmWidth = 425; // 图片的宽
int bmHeight = 185; // 图片的高
Bitmap bm = new Bitmap(bmWidth,bmHeight); //创建位图
Graphics g = Graphics.FromImage(bm);
2.画矩形图
int xPoint, yPoint; // 矩形左上角x,y坐标
xPoint = 135;
yPoint = 15;
int width = 250; //矩形的宽
int height = 125; //矩形的高
int xP = 30; // x比例
int yP = 15; // y比例
g.DrawRectangle(new Pen(Brushes.Silver, 1),xPoint,yPoint,width,height); // 矩形
可以根据矩形图的长,宽定义下一步要画的图形与此矩形的关系,这样开始画直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint,yPoint,xPoint-xP,yPoint+yP); // 左上直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint,yPoint+height,xPoint-xP,yPoint+height+yP); // 左下直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint-xP,yPoint+yP,xPoint-xP,yPoint+height+yP); // 左面直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint-xP,yPoint+height+yP,xPoint-xP+width,yPoint+height+yP); // 前面直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint+width,yPoint+height,xPoint-xP+width,yPoint+height+yP); // 右面直线
或
// Point[] points = new Point[]{new Point(xPoint,yPoint), new Point(xPoint,yPoint+120),new Point(xPoint-30,yPoint+135),
// new Point(xPoint-30,yPoint+15)};
// g.DrawPolygon(new Pen(Brushes.Silver, 1),points);
3.
大致框架已构建好了,现在开始画柱状图
pY = barValues[i]/xValues[xValues.Length-1];
width = int.Parse((265*pY).ToString("0")); // 柱形的长
g.DrawRectangle(new Pen(Brushes.Black, 1),xPoint-30,yPoint+15+10+yHeight*i+ySpace*i,width,24);
g.FillRectangle(brush[i],xPoint-30,yPoint+15+10+yHeight*i+ySpace*i,width,24);
points = new Point[]{new Point(xPoint-30+width,yPoint+15+10+yHeight*i+ySpace*i), //左上
new Point(xPoint+width,yPoint+10+yHeight*i+ySpace*i), //右上
new Point(xPoint+width,yPoint+10+24+yHeight*i+ySpace*i), //右下
new Point(xPoint-30+width,yPoint+15+10+24+yHeight*i+ySpace*i) // 左下
};
g.DrawPolygon(new Pen(Brushes.Black, 1),points);
g.FillPolygon(brush[i],points);
points2 = new Point[]{new Point(xPoint-30,yPoint+15+10+yHeight*i+ySpace*i), //左上
new Point(xPoint,yPoint+10+yHeight*i+ySpace*i), //右上
new Point(xPoint+width,yPoint+10+yHeight*i+ySpace*i), //右下
new Point(xPoint-30+width,yPoint+15+10+yHeight*i+ySpace*i) // 左下
};
g.DrawPolygon(new Pen(Brushes.Black, 1),points2);
g.FillPolygon(brush[i],points2);
现在已基本完成
源码
int bmWidth = 425; // 图片的宽
int bmHeight = 185; // 图片的高
Bitmap bm = new Bitmap(bmWidth,bmHeight); //创建位图
Graphics g = Graphics.FromImage(bm);
int xPoint, yPoint; // 矩形左上角x,y坐标
xPoint = 135;
yPoint = 15;
int width = 250; //矩形的宽
int height = 125; //矩形的高
int xP = 30; // x比例
int yP = 15; // y比例
g.DrawRectangle(new Pen(Brushes.Silver, 1),xPoint,yPoint,width,height); // 矩形
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint,yPoint,xPoint-xP,yPoint+yP); // 左上直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint,yPoint+height,xPoint-xP,yPoint+height+yP); // 左下直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint-xP,yPoint+yP,xPoint-xP,yPoint+height+yP); // 左面直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint-xP,yPoint+height+yP,xPoint-xP+width,yPoint+height+yP); // 前面直线
g.DrawLine(new Pen(Brushes.Silver, 1),xPoint+width,yPoint+height,xPoint-xP+width,yPoint+height+yP); // 右面直线
// Point[] points = new Point[]{new Point(xPoint,yPoint), new Point(xPoint,yPoint+120),new Point(xPoint-30,yPoint+135),
// new Point(xPoint-30,yPoint+15)};
// g.DrawPolygon(new Pen(Brushes.Silver, 1),points);大致框架已构建好了,现在开始画柱状图
pY = barValues[i]/xValues[xValues.Length-1];
width = int.Parse((265*pY).ToString("0")); // 柱形的长
g.DrawRectangle(new Pen(Brushes.Black, 1),xPoint-30,yPoint+15+10+yHeight*i+ySpace*i,width,24);
g.FillRectangle(brush[i],xPoint-30,yPoint+15+10+yHeight*i+ySpace*i,width,24);
points = new Point[]{new Point(xPoint-30+width,yPoint+15+10+yHeight*i+ySpace*i), //左上
new Point(xPoint+width,yPoint+10+yHeight*i+ySpace*i), //右上
new Point(xPoint+width,yPoint+10+24+yHeight*i+ySpace*i), //右下
new Point(xPoint-30+width,yPoint+15+10+24+yHeight*i+ySpace*i) // 左下
};
g.DrawPolygon(new Pen(Brushes.Black, 1),points);
g.FillPolygon(brush[i],points);
points2 = new Point[]{new Point(xPoint-30,yPoint+15+10+yHeight*i+ySpace*i), //左上
new Point(xPoint,yPoint+10+yHeight*i+ySpace*i), //右上
new Point(xPoint+width,yPoint+10+yHeight*i+ySpace*i), //右下
new Point(xPoint-30+width,yPoint+15+10+yHeight*i+ySpace*i) // 左下
};
g.DrawPolygon(new Pen(Brushes.Black, 1),points2);
g.FillPolygon(brush[i],points2);现在已基本完成
源码
points 
浙公网安备 33010602011771号