我通過從另一箇中提取200x200平方來創建一個新的位圖。我認爲源代碼(位圖像素)由這兩者共享。現在,當我在原始圖像上畫一個圓圈時,副本上也有一個圓圈。但是當我這樣做時 - 在新創建的一個上繪製一個圓 - 原始圖上沒有圓圈。爲什麼會發生?我認爲源像素是共享的。在共享源位圖上繪圖
private Bitmap testa(Bitmap bmp)
{
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
//Create a new bitmap.
Bitmap newBitmap = new Bitmap(200, 200, bmpData.Stride, bmp.PixelFormat, bmpData.Scan0);
bmp.UnlockBits(bmpData);
// Draw the new bitmap.
using (Graphics g = Graphics.FromImage(bmp)) // or: newBitmap
{
g.DrawEllipse(new Pen(Brushes.Red), 1, 1, 100, 100);
}
return newBitmap;
}
我不認爲你實際上'分享'像素。你只能複製他們有或沒有圈子。另外:爲什麼不復制DrawImage?它具有這樣的格式! – TaW 2014-12-04 17:22:06
@TaW那麼爲什麼當我先複製圖像並在稍後繪製圖像時,圓形會在兩幅圖像上顯示?對於DrawImage:這只是一個例子,我只有IntPtr才能從不完整的位圖複製。 – user0101 2014-12-04 17:27:30
我們看到了代碼嗎? – TaW 2014-12-04 18:11:02