c# 中的 pictureBox.Image.Save() 不起作用
本文关键字:不起作用 Save Image 中的 pictureBox | 更新日期: 2023-09-27 18:36:59
我不明白这个问题。因为这通常一直有效到现在。此方法是在单击时的反应,用于将图像保存在称为画布的图片框上。我将图像加载到画布上,然后进行一些编辑。然后我想保存图像。如果我在加载图像之前单击打印屏幕按钮,它可以工作,但是当我加载图像时,它停止工作。问题可能出在哪里?
private void printScreenButton_Click(object sender, EventArgs e)
{
canvas.Image.Save("name.png", System.Drawing.Imaging.ImageFormat.Png);
}
编辑:
工作 == 名为 name.png 的文件被创建
不起作用 == 文件名.png未创建
绘制图像的代码 == 放在图片盒上
` private void drawTransformedBitmap(Matrix transformationMatrix)
{
Graphics g = Graphics.FromImage(canvasBitmapShow); //prepare graphics
if (antialiasing)
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
}
else
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
}
g.Clear(Color.White); //clear canvas
g.Transform.Reset(); //clear transformations
g.Transform = transformationMatrix; //set transformations from transformationMatrix
g.DrawImage(canvasBitmapTarget, 0, 0); //draw from Bitmap called canvasBitmapTarget
canvas.Invalidate(); //refresh canvas
}`
开头初始化:
canvasBitmapShow = new Bitmap(canvas.Width, canvas.Height);
canvasBitmapSource = new Bitmap(canvas.Width, canvas.Height);
canvasBitmapTarget = new Bitmap(canvas.Width, canvas.Height);
canvasBitmapBackup = new Bitmap(canvas.Width, canvas.Height);
canvas.Image = canvasBitmapShow; //set the Image
帆布。Image.Save("name.png", System.Drawing.Imaging.ImageFormat.Png);
永远不要编写这样的代码,不要指定文件的完整路径。 这使得文件的实际位置严重依赖于程序的当前工作目录。 环境.当前目录的值。 这可能会意外更改,使用未将 RestoreDirectory 属性设置为 true 的 OpenFileDialog 就是一个例子。
如果没有例外,那么您可以确定文件已保存。 确切的保存位置是一个猜测。 至少使用 SaveFileDialog 或 Environment.GetFolderPath() 来获取可预测的目录名称。 此外,默认工作目录在用户的计算机上不起作用,您无法写入 c:''program 文件。
当您加载图像时,我想使用 OpenFileDialog,您更改了当前目录,只需将 RestoreDirectory 设置为 true 以防止这种行为,但请注意,显然根据此处的答案,它有时在操作系统中的行为会有所不同
也许解决此问题的最简单方法是使用特殊文件夹保存文件。