画图问题 求大神帮忙改改 对画图了解甚微啊 c#网格bitmap图片画图 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for (int i = 1; i <= fileLen / 0x8000 - 1; i++) { dotPoint = _getPoint(filepath, i); foreach (PointF p in dotPoint) { if (_height <= p.Y) { _height = p.Y; } } for (int j = 0; j < dotPoint.Count; j++) { currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25; currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25; listDrawPoints.Add(currentPointF); } }i从1开始呢? 如果是数据的话,是不是可以换成decimal,精度高 报这个错加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看 在_changeToDrawPoints函数中加入以下调试代码,很有可能有除零或溢出的错误:for (int j = 0; j < dotPoint.Count; j++){ currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25; currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25; listDrawPoints.Add(currentPointF); if (_height == 0) MessageBox.Show("divided by zero _height"); // <-- 调试 if (float.IsNaN(currentPointF.X) || float.IsInfinity(currentPointF.X)) MessageBox.Show("X is wrong"); // <-- 调试 if (float.IsNaN(currentPointF.Y) || float.IsInfinity(currentPointF.Y)) MessageBox.Show("Y is wrong"); // <-- 调试} 报这个错加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看打断点开了一下,_height显示的是0,0.3126757E+00得到的结果好像是0,_getPoint里该怎么改啊 _height确实是0,_getPoint函数该怎么改啊 确实是可以的,但是我怎么判断应该放大多少呢?在_getPoint函数里Point pot = new Point(br.ReadInt32(), br.ReadInt32() / 1000);像这组数据0.3126757E+00,我*1000就可以了;0.2537688E-04这组我得*1E+07 我的程序是先根据数据生成一个.wave文件,再生成的.png.wave文件的部分代码在这里,数据我是一行一行的写的,注释是我新加的,efac函数用来求数量级,好让它们放大或缩小,但我每次都算下数量级的话,一组(一列)数据的数量级可能就不一样了,问题是我怎么获得这一组(一列)数据的数量级?然后在每行写入的时候还能对应相应的数量级啊?String line = null; int linenum = 0; //用于暂存 行号. Dictionary<string, FileStream> fileStreamList = new Dictionary<string, FileStream>(); //文件流字典 string[] filelist = File.ReadAllLines(Tools.PathJoin(TemplateFilepath, parafile), Encoding.UTF8); do { try { line = filelist[linenum]; // 一次读取一行数据. } catch (System.Exception ex) { } if (linenum == 0) { LineHead = StringSplit(line); //遍历结果文件的头信息 string _head = ""; if (headflag) headName = new StreamWriter(Tools.PathJoin(ModuleName, "HeadName.rinfo"), false, Encoding.UTF8); for (int i = 1; i < LineHead.Count; i++) { FileStream fs = new FileStream(Tools.PathJoin(ModuleName, parafilename, LineHead[i] + ".wave"), FileMode.Create, FileAccess.Write); if (headflag) _head += LineHead[i] + ","; fileStreamList.Add(LineHead[i], fs); } if (headflag) { headName.Write(_head.Trim(',')); headflag = false; headName.Close(); } } else { if (line != null) { List<string> datalist = StringSplit(line); for (int i = 1; i < datalist.Count; i++) { fileWrite = fileStreamList[LineHead[i]]; bw = new BinaryWriter(fileWrite); bw.BaseStream.Seek(0, SeekOrigin.End); //数据流指针移到最后 bw.Write((int)(float.Parse(datalist[0]))); bw.Write((int)(float.Parse(datalist[i]) * 1000)); //int e = efac(float.Parse(datalist[i])); //bw.Write((int)(float.Parse(datalist[i]) * (int)Math.Pow(10, 2 - e) * 1000)); } } } linenum++; 这些数据是用科学技术法表示的,这种表示法是0.xxxxxE+xx或0.xxxxxE-xx的形式,你可以在判断时先转为字符串,然后找到“E”,根据后面的+或-和数字就能知道是放大或缩小,以及倍数了 也可以你的数据先放大或缩小,从小到大的倍数循环试,如先*10,再*100,*1000等,直到能正常运算(不抛异常了),也许高人有更好的处理方法,期待中....... 40分http://bbs.csdn.net/topics/39072195220分http://bbs.csdn.net/topics/390721857?page=1#post-396876680一共160分,求解决该问题 这个递加的方法有没有简写的方法呢 求助:数据库数据在界面显示N条合并一条 【倾分求助】关于datagridview分组打印的问题:水晶报表?RDLC?其他方式? 如何设置为短时间格式 新人,,提个抽象类继承的问题 高分求救:在datagrid中指定位置插入一个空行 新手问题给个修改数剧的语句 请教一个简单的问题~~ [求助].net控件包含office功能 C#如何直接求出二维实数数组的均值 C# 如何去除checkbox选中的内容 C#TreeView根据Combox的值来定位到节点
{
dotPoint = _getPoint(filepath, i);
foreach (PointF p in dotPoint)
{
if (_height <= p.Y)
{
_height = p.Y;
}
}
for (int j = 0; j < dotPoint.Count; j++)
{
currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25;
currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25;
listDrawPoints.Add(currentPointF);
}
}i从1开始呢?
加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看
for (int j = 0; j < dotPoint.Count; j++)
{
currentPointF.X = (dotPoint[j].X) * (width - 1) / float.Parse(dotPoint.Count.ToString()) + 25;
currentPointF.Y = (dotPoint[j].Y) * (height - 1) / _height + 25;
listDrawPoints.Add(currentPointF); if (_height == 0) MessageBox.Show("divided by zero _height"); // <-- 调试
if (float.IsNaN(currentPointF.X) || float.IsInfinity(currentPointF.X)) MessageBox.Show("X is wrong"); // <-- 调试
if (float.IsNaN(currentPointF.Y) || float.IsInfinity(currentPointF.Y)) MessageBox.Show("Y is wrong"); // <-- 调试
}
加断点跟踪float.Parse(dotPoint.Count.ToString())和_height看看
打断点开了一下,_height显示的是0,0.3126757E+00得到的结果好像是0,_getPoint里该怎么改啊
.wave文件的部分代码在这里,数据我是一行一行的写的,注释是我新加的,efac函数用来求数量级,好让它们放大或缩小,但我每次都算下数量级的话,一组(一列)数据的数量级可能就不一样了,问题是我怎么获得这一组(一列)数据的数量级?然后在每行写入的时候还能对应相应的数量级啊?String line = null;
int linenum = 0; //用于暂存 行号.
Dictionary<string, FileStream> fileStreamList = new Dictionary<string, FileStream>(); //文件流字典
string[] filelist = File.ReadAllLines(Tools.PathJoin(TemplateFilepath, parafile), Encoding.UTF8);
do
{
try
{
line = filelist[linenum]; // 一次读取一行数据.
}
catch (System.Exception ex)
{
}
if (linenum == 0)
{
LineHead = StringSplit(line); //遍历结果文件的头信息
string _head = "";
if (headflag)
headName = new StreamWriter(Tools.PathJoin(ModuleName, "HeadName.rinfo"), false, Encoding.UTF8);
for (int i = 1; i < LineHead.Count; i++)
{
FileStream fs = new FileStream(Tools.PathJoin(ModuleName, parafilename, LineHead[i] + ".wave"), FileMode.Create, FileAccess.Write);
if (headflag)
_head += LineHead[i] + ",";
fileStreamList.Add(LineHead[i], fs);
}
if (headflag)
{
headName.Write(_head.Trim(','));
headflag = false;
headName.Close();
}
}
else
{
if (line != null)
{
List<string> datalist = StringSplit(line);
for (int i = 1; i < datalist.Count; i++)
{
fileWrite = fileStreamList[LineHead[i]];
bw = new BinaryWriter(fileWrite);
bw.BaseStream.Seek(0, SeekOrigin.End); //数据流指针移到最后
bw.Write((int)(float.Parse(datalist[0])));
bw.Write((int)(float.Parse(datalist[i]) * 1000));
//int e = efac(float.Parse(datalist[i]));
//bw.Write((int)(float.Parse(datalist[i]) * (int)Math.Pow(10, 2 - e) * 1000));
}
}
}
linenum++;
也可以你的数据先放大或缩小,从小到大的倍数循环试,如先*10,再*100,*1000等,直到能正常运算(不抛异常了),
也许高人有更好的处理方法,期待中.......
20分http://bbs.csdn.net/topics/390721857?page=1#post-396876680
一共160分,求解决该问题