GDI+中發生一般性錯誤的解決辦法
1. 指定的物理路徑不存在。
解決方法:
在呼叫 Save 方法之前,先判斷目錄是否存在,若不存在,則建立。
if (!Directory.Exists(dirpath))
Directory.CreateDirectory(dirpath);
2. 儲存的檔案已存在並因某種原因被鎖定。
解決方法:
解除鎖定。並在程式碼中使用 using 語句,確保釋放 Image 物件所使用的所有資源。
此解決辦法在索引格式建立一個 Bitmap 物件:
1. 構造從流、 從記憶體, 或從檔案原始 點陣圖 。
2. 建立新 點陣圖 具有相同的大小和畫素格式作為首 點陣圖 。
3. 使用 Bitmap.LockBits() 方法來鎖定整個影象對於兩 Bitmap 物件以其本機畫素格式。
4. 使用 Marshal.Copy 函式或其他記憶體複製函式來從首 點陣圖 複製到二 點陣圖 影象位。
5. 使用 Bitmap.UnlockBits() 方法可以解鎖兩 Bitmap 物件。
6. 用於 Bitmap.Dispose() 是首 點陣圖 處置。
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//建立一個bitmap型別的bmp變數來讀取檔案。
Bitmap bmp = new Bitmap(openFileDialog1 .FileName );
//新建第二個bitmap型別的bmp2變數,我這裡是根據我的程式需要設定的。
Bitmap bmp2 = new Bitmap(1024, 768, PixelFormat.Format16bppRgb555);
//將第一個bmp拷貝到bmp2中
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp,0,0);
pictureBox1.Image = (Image)bmp2 ;//讀取bmp2到picturebox
FILE = openFileDialog1.FileName;
openFileDialog1.Dispose();
draw.Dispose();
bmp.Dispose();//釋放bmp檔案資源
}
}
通過以上的讀取檔案,在儲存的時候就不會出現錯誤了。