gdi+中发生一般性错误。。。。
也许看到这个题目很多人要喷我了。。
我也找了很多资料。
C# code
//创建一个bitmap类型的bmp变量来读取文件。
Bitmap bmp = new Bitmap(fileNameExt);
//新建第二个bitmap类型的bmp2变量
Bitmap bmp2 = new Bitmap(800, 500, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
//将第一个bmp拷贝到bmp2中
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp, 0, 0);
filePanel.BackgroundImage = (Image)bmp2;//读取bmp2到picturebox
//string file = openFileDialog1.FileName;
openFileDialog1.Dispose();
draw.Dispose();
bmp.Dispose();//释放bmp文件资源
这是我找到并修改了的,由于我的panel大小是800,500的,设置完之后,添加图片都是正常的,但是打开图片的时候,图片不再是正好填充在panel里了。。filePanel.BackgroundImageLayout = ImageLayout.Stretch;我已经写了这句。
我在想是不是像素的问题??
有没有大神可以给点提示。。????
现在我的程序已经不报GDI+的错误了,就是图片打开有问题。。。
------解决方案--------------------//新建第二个bitmap类型的bmp2变量
Bitmap bmp2 = new Bitmap(800, 500,
你把这句800,500,直接换成panel的宽和高
------解决方案-------------------- Bitmap bmp = new Bitmap("D:\\aaa.jpg");
//新建第二个bitmap类型的bmp2变量
Bitmap bmp2 = new Bitmap(bmp.Width, bmp.Height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
//将第一个bmp拷贝到bmp2中
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp, 0, 0);
this.panel1.BackgroundImage = (Image)bmp2;//读取bmp2到picturebox
panel1.BorderStyle = BorderStyle.Fixed3D;
//string file = openFileDialog1.FileName;
draw.Dispose();
bmp.Dispose();//释放bmp文件资源
------解决方案-------------------- Bitmap bmp = new Bitmap("D:\\aaa.jpg");
this.panel1.BackgroundImage = (Image)bmp
实际上,只要这2句就够了。
------解决方案--------------------每错,再加上filePanel.BackgroundImageLayout = ImageLayout.Stretch就能铺满了。
如果一定要按你的思路来,就改一句
draw.DrawImage(bmp, new Rectangle(Point.Empty, bmp2.Size), new Rectangle(Point.Empty, bmp.Size), GraphicsUnit.Pixel);
------解决方案--------------------panel1 的属性里面看有没有设置背景图片的模式,改为自动调整
------解决方案--------------------
去掉后面的16位色深参数,默认32位
Bitmap bmp2 = new Bitmap(800, 500)
draw.DrawImage(bmp, 0, 0);
改成
draw.DrawImage(bmp,New rectangle(0,0,800,500),new rectangle(0,0,bmp.width,bmp.height);