跪求C#中如何绘制棒装图。人人有分!!! 我刚刚开始看C#,连初学者都不算,今天头儿让我用C#做一个绘制棒装图的程序。以前我用VB做过一个,但是效果不是很好。那位大侠帮帮忙,指导一下小弟。不胜感激。C#里面有类似于VB中的MSchart控件的吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 平身!朕赐你一个好东东:Dundas Chart:P to wangxiaohu(如花) :能发到.cn,谢谢 Dundas Chart专业级的,用好没有商量 不能重定义坐标点用GDI+可以设定一个坐标点,其他都是相对坐标,根据坐标原点进行换算 谢谢楼上的,如果我想在我画的棒图的下面加文字,该怎么做呢。在VB里有个.print ***,可是C#里没有,帮帮我吧。 //柱状图 case EffectType.Bar: //计算每个柱的宽度 int nBarWidth = 0; if(_ArrayCount == 1) { nBarWidth = (_Width-_Y)/_xDiv/2; } else { nBarWidth = (_Width-_Y)/_xDiv/(_ArrayCount); } //循环画出所以柱图 for(int i = 0 ; i < LineValue.Length;i++) { //柱图左上角X,Y的坐标 int nBarx = XYpoint[i].X+nBarWidth*_BarCount; int nBary = XYpoint[i].Y; //柱图的高度 int nBarHeight = _Height - XYpoint[i].Y-_X; //在指定的坐标画出矩型并填充 Rectangle newRec = new Rectangle(nBarx,nBary,nBarWidth,nBarHeight); g.FillRectangle(new SolidBrush(LineColor),newRec); //画出此点值 g.DrawString(LineValue[i].ToString(),_Font,sBrush,nBarx,(nBary-(_Font.Height)-2)); } //计算画了第几个柱图了 _BarCount++; break; //曲线图和柱图 case EffectType.LineAndBar: #region 曲线图 //判断是否符合作图条件 //至少需要二点才能确定一条直线 if(LineValue.Length > 1) { //定义作图线的效果 Pen LinePen = new Pen(LineColor); //线的宽度 LinePen.Width = _LineWidth; //取得第一个点 Point Pxy1 = XYpoint[0]; //是否显示出坐标点的(X,Y)值 if(_ShowNotice == true) { //g.DrawString("[ "+LineValue[0].ToString()+",1]",_Font, sBrush,Pxy1.X,Pxy1.Y); } //画出坐标值的点 g.DrawString("·",LineFont,sBrush,Pxy1.X-8,Pxy1.Y-16); //取得一下点坐标点 Point Pxy2 = XYpoint[1]; //画出所有坐标点并联机 int i = 2; do { //画二个坐标点间联机 g.DrawLine(LinePen,Pxy1,Pxy2); //是否显示出坐标点的(X,Y)值 if(_ShowNotice == true) { //g.DrawString("[ "+LineValue[i-1].ToString()+","+(i).ToString()+" ]",_Font, sBrush,Pxy2.X,Pxy2.Y); } g.DrawString("·",LineFont, sBrush,Pxy2.X-8,Pxy2.Y-16); Pxy1=Pxy2; Pxy2=XYpoint[i]; i++; } while(i < LineValue.Length); //画最后一条 g.DrawLine(LinePen,Pxy1,Pxy2); //是否显示出坐标点的(X,Y)值 if(_ShowNotice == true) { //g.DrawString("[ "+LineValue[i-1].ToString()+","+(i).ToString()+" ]",_Font, sBrush,Pxy2.X,Pxy2.Y); } g.DrawString("·",LineFont, sBrush,Pxy2.X-9,Pxy2.Y-16); } #endregion #region 柱图 //计算每个柱的宽度 //int nBarWidth = 0; if(_ArrayCount == 1) { nBarWidth = (_Width-_Y)/_xDiv/2; } else { nBarWidth = (_Width-_Y)/_xDiv/(_ArrayCount); } //循环画出所以柱图 for(int i = 0 ; i < LineValue.Length;i++) { //柱图左上角X,Y的坐标 int nBarx = XYpoint[i].X+nBarWidth*_LineAndBarCount; int nBary = XYpoint[i].Y; //柱图的高度 int nBarHeight = _Height - XYpoint[i].Y-_X; //在指定的坐标画出矩型并填充 Rectangle newRec = new Rectangle(nBarx,nBary,nBarWidth,nBarHeight); g.FillRectangle(new SolidBrush(LineColor),newRec); //画出此点值 g.DrawString(LineValue[i].ToString(),_Font,sBrush,nBarx,(nBary-(_Font.Height)-2)); } //计算画了第几个柱图了 _LineAndBarCount++; break; #endregion //错误 default: throw (new Exception("错误:\r\n\r\n未定义的效果类型!")); } to dunao([捐款給印尼的中國人就是犯賤]) :谢谢,我是个初学者,以后可能还有许多问题要请教。刚下完,看看。 iis6所有站点都不能访问,进程里没有w3wp.exe进程. 【感谢放歌,sp,阿非,vrhero】经过指点后的修改 请求大神,帮忙解决一下这个习题!! 关于DataGridView问题 我怎么可以打印出 PictureBox1.Location 的值? 通过鼠标实现测距 运行web服务需要对IIS做什么特殊的配置吗? 树型问题 执行insert语句时出错,commandtext does not return a result set 麻烦帮忙看看啊! 帮帮我看看代码 请教各位 达人 如何能从 DataSet 中 读出 某行某列 数据 100分求win编程(c/s)的C#的分页代码
朕赐你一个好东东:
Dundas Chart
:P
能发到.cn,谢谢
用GDI+
可以设定一个坐标点,其他都是相对坐标,根据坐标原点进行换算
case EffectType.Bar:
//计算每个柱的宽度
int nBarWidth = 0;
if(_ArrayCount == 1)
{
nBarWidth = (_Width-_Y)/_xDiv/2;
}
else
{
nBarWidth = (_Width-_Y)/_xDiv/(_ArrayCount);
}
//循环画出所以柱图
for(int i = 0 ; i < LineValue.Length;i++)
{
//柱图左上角X,Y的坐标
int nBarx = XYpoint[i].X+nBarWidth*_BarCount;
int nBary = XYpoint[i].Y;
//柱图的高度
int nBarHeight = _Height - XYpoint[i].Y-_X;
//在指定的坐标画出矩型并填充
Rectangle newRec = new Rectangle(nBarx,nBary,nBarWidth,nBarHeight);
g.FillRectangle(new SolidBrush(LineColor),newRec);
//画出此点值
g.DrawString(LineValue[i].ToString(),_Font,sBrush,nBarx,(nBary-(_Font.Height)-2));
}
//计算画了第几个柱图了
_BarCount++;
break;
//曲线图和柱图
case EffectType.LineAndBar:
#region 曲线图
//判断是否符合作图条件
//至少需要二点才能确定一条直线
if(LineValue.Length > 1)
{
//定义作图线的效果
Pen LinePen = new Pen(LineColor);
//线的宽度
LinePen.Width = _LineWidth;
//取得第一个点
Point Pxy1 = XYpoint[0];
//是否显示出坐标点的(X,Y)值
if(_ShowNotice == true)
{
//g.DrawString("[ "+LineValue[0].ToString()+",1]",_Font, sBrush,Pxy1.X,Pxy1.Y);
}
//画出坐标值的点
g.DrawString("·",LineFont,sBrush,Pxy1.X-8,Pxy1.Y-16);
//取得一下点坐标点
Point Pxy2 = XYpoint[1];
//画出所有坐标点并联机
int i = 2;
do
{
//画二个坐标点间联机
g.DrawLine(LinePen,Pxy1,Pxy2);
//是否显示出坐标点的(X,Y)值
if(_ShowNotice == true)
{
//g.DrawString("[ "+LineValue[i-1].ToString()+","+(i).ToString()+" ]",_Font, sBrush,Pxy2.X,Pxy2.Y);
}
g.DrawString("·",LineFont, sBrush,Pxy2.X-8,Pxy2.Y-16);
Pxy1=Pxy2;
Pxy2=XYpoint[i];
i++;
}
while(i < LineValue.Length);
//画最后一条
g.DrawLine(LinePen,Pxy1,Pxy2);
//是否显示出坐标点的(X,Y)值
if(_ShowNotice == true)
{
//g.DrawString("[ "+LineValue[i-1].ToString()+","+(i).ToString()+" ]",_Font, sBrush,Pxy2.X,Pxy2.Y);
}
g.DrawString("·",LineFont, sBrush,Pxy2.X-9,Pxy2.Y-16);
}
#endregion #region 柱图
//计算每个柱的宽度
//int nBarWidth = 0;
if(_ArrayCount == 1)
{
nBarWidth = (_Width-_Y)/_xDiv/2;
}
else
{
nBarWidth = (_Width-_Y)/_xDiv/(_ArrayCount);
}
//循环画出所以柱图
for(int i = 0 ; i < LineValue.Length;i++)
{
//柱图左上角X,Y的坐标
int nBarx = XYpoint[i].X+nBarWidth*_LineAndBarCount;
int nBary = XYpoint[i].Y;
//柱图的高度
int nBarHeight = _Height - XYpoint[i].Y-_X;
//在指定的坐标画出矩型并填充
Rectangle newRec = new Rectangle(nBarx,nBary,nBarWidth,nBarHeight);
g.FillRectangle(new SolidBrush(LineColor),newRec);
//画出此点值
g.DrawString(LineValue[i].ToString(),_Font,sBrush,nBarx,(nBary-(_Font.Height)-2));
}
//计算画了第几个柱图了
_LineAndBarCount++;
break;
#endregion
//错误
default:
throw (new Exception("错误:\r\n\r\n未定义的效果类型!"));
}
谢谢,我是个初学者,以后可能还有许多问题要请教。刚下完,看看。