Bitmap保存图片全是黑的

cunnor 2013-10-11 11:15:38

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Windows.Forms;

namespace frmSxqm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private Graphics g;
private int sX, sY;
private Bitmap bitmap;

private void Form1_Load(object sender, EventArgs e)
{
bitmap = new Bitmap(300, 300);
g = Graphics.FromImage(bitmap);
Cursor.Current = Cursors.Default;
}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
sX = e.X;
sY = e.Y;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
g.DrawLine(new Pen(Color.Black, 3), sX, sY, e.X, e.Y);
sX = e.X; sY = e.Y;
this.pictureBox1.Image = bitmap;
}

private void button1_Click(object sender, EventArgs e)
{
bitmap = new Bitmap(300, 300);
g = Graphics.FromImage(bitmap);
this.pictureBox1.Image = bitmap;
}

private void button2_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定签名完成了吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (result == DialogResult.Cancel)
return;
else
{
string signaturePath = DateTime.Now.ToString("yyMMddHHmmssms") + ".jpg";
compressionPicture(bitmap, 300, 300, signaturePath, ImageFormat.Jpeg);
//this.Close();
}
}
private void compressionPicture(Bitmap bmap, int newWidth, int newHeight, string saveFileName, ImageFormat format)
{
Bitmap newImg = new Bitmap(newWidth, newHeight);
Rectangle srcRec = new Rectangle(0, 0, bmap.Width, bmap.Height);
Rectangle destRec = new Rectangle(0, 0, newWidth, newHeight);
Graphics g = Graphics.FromImage(newImg);
g.DrawImage(bmap, destRec, srcRec, GraphicsUnit.Pixel);
newImg.Save(saveFileName, format);
}
}
}

为什么保存图片全是黑的啊
求高手指点
...全文
1024 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2013-10-11
  • 打赏
  • 举报
回复
存png就好了。
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复
绘图表明--->>绘图表面
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复
两个解决方法: 1.把绘图表明用指定颜色清除下(new bitmap 缺省像素值是(0,0,0)) 参考一楼 2.把位图保存为 png 格式

string  signaturePath = DateTime.Now.ToString("yyMMddHHmmssms") + ".png"; 
compressionPicture(bitmap, 300, 300, signaturePath, ImageFormat.Png); 
智商余额不足 2013-10-11
  • 打赏
  • 举报
回复
为什么要写多这个啊

 private void button1_Click(object sender, EventArgs e)
        {
            bitmap = new Bitmap(300, 300);
            g = Graphics.FromImage(bitmap); 
            this.pictureBox1.Image = bitmap;
        }
  • 打赏
  • 举报
回复
Graphics g = Graphics.FromImage(newImg); g.Clear(Color.White);

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧