关于GDI+问题寻解
这段代码总是在 img2.Save(@"d:\ttttt.bmp", ImageFormat.Bmp); 发生错误。错误显示如下:
未处理 ExternalException
GDI+ 中发生一般性错误。
请大家指正一下,修改下代码以使其能运行。
--------------------编程问答-------------------- 你跟踪测试一下吧,可能参数传递的有问题吧 --------------------编程问答-------------------- 在线求解,帮忙修改下代码 --------------------编程问答-------------------- 给你调试了一下,,你可以把保存的名字改一下就不会报错了……
private void button6_Click(object sender, EventArgs e)
{
if (File.Exists(@"d:\ttttt.bmp"))
File.Delete(@"d:\ttttt.bmp");
Bitmap img = new Bitmap(3600, 4800, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.White);
img.Save(@"d:\ttttt.bmp", ImageFormat.Bmp);
g.Dispose();
img.Dispose();
int barHeigh = 30;
Pen pen = new Pen(Color.Black);
pen.Width = 5.0F;
int heigh = 5;
for (float line = 30.0F; line <= 35.0F; line += 0.1F)
{
Bitmap img1 = new Bitmap(@"d:\ttttt.bmp");
Bitmap img2 = new Bitmap(img1);
img2.SetResolution(line * 10, line * 10);
Graphics g1 = Graphics.FromImage(img2);
g1.SetClip(new Rectangle(5, heigh, 600, heigh + barHeigh) );
for (int width = 5; width <= 605; width += 10)
{
g1.DrawLine(pen, new Point(width, heigh), new Point(width, heigh + barHeigh));
}
heigh = heigh + barHeigh + 10;
img2.Save(@"d:\ttttt.bmp", ImageFormat.Bmp);
g1.Dispose();
img2.Dispose();
img1.Dispose();
}
}
不过你的这个弄图片也太大了,几十M…… --------------------编程问答--------------------
您没有仔细看我的代码,没弄明白代码的含义,保存的文件名不能变。
这段程序的本意是,针对每一线执行循环,
每一次循环,按线路(line)的十倍,更改图像分辨率
然后在每一个剪切区域中,通过循环画出许多竖线。
然后就保存图像,重新执行line的循环。希望能得到
这样的一幅图像:每一行里有许多竖线,每一行竖线都是
按照不同分辨率画出来的,这样一幅图类似光栅测试条的图像。
不过还是很感谢您,麻烦您再看看,用什么办法能解决我的问题。
--------------------编程问答-------------------- 楼主,#1 的已经说了,你为什么不调试一下呢?设个断点就能调试的,
执行一下,单步跟踪就知道了呀。 --------------------编程问答--------------------
我怎么没单步调试?先弄明白程序的意图再说吧,文件名不能改变的,一条测试条就要保存一个文件,那2条,3条。。。。。那岂不是要保存很多文件?必须在一个文件里,至于怎么控制,我没弄明白,希望各位能帮个忙。 --------------------编程问答-------------------- 这么大图片是不可能加载进去,把图形分形,或保存矢量图形 --------------------编程问答--------------------
答非所问 --------------------编程问答--------------------
人家没有答非所问,你自己说整段代码出现[b]GDI+ 一般性错误[\b],
图片太大无法加载报异常或许也是一种情况。
调试设断点:F9
单步跟踪:F10
再退一万步说,整个代码用 try catch 包起来,catch 里面 show 一个 messagebox,看看错误不就好了。
当遇到错误,就会显示出来啊。 --------------------编程问答-------------------- 在你的图片资源中,有这个ImageFormat名字吗?是不是改图片的名字了?造成的? --------------------编程问答--------------------
你把图片放小 就知道了
补充:.NET技术 , C#