一千萬個為什麽

搜索

GDI + DrawImage函數

有一些我想念的東西。說我有以下代碼:

private Bitmap source = new Bitmap (some_stream);
Bitmap bmp = new Bitmap(100,100);
Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
Rectangle toZoom= new Rectangle(0, 0, 10, 10);

Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);

我的目標是放大源圖片左上角的1​​0x10像素。在我創建圖形對象g並調用DrawImage之後:請求的矩形(toZoom)將被復制到bmp,還是會顯示在屏幕上?我有點困惑,有人可以澄清一下嗎?

最佳答案

你的代碼只會給你一個內存中的位圖(它不會自動顯示在屏幕上)。顯示此方法的一種簡單方法是在表單上放置一個100 x 100 PictureBox ,並設置其 Image 屬性(使用 Bitmap >從上面的代碼):

pictureBox1.Image = bmp;

此外,您還需要在代碼中使用塊中的一些

using (private Bitmap source = new Bitmap (some_stream))
{
    Bitmap bmp = new Bitmap(100,100);
    Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
    Rectangle toZoom= new Rectangle(0, 0, 10, 10);
    using (Graphics g = Graphics.FromImage(bmp))
    {
        g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);
    }
    pictureBox1.Image = bmp;
}

請註意, bmp 沒有使用塊 - 這是因為您將其設置為PictureBox的Image屬性。 using 塊會在塊的範圍結束時自動調用對象的Dispose方法,您不想這樣做,因為它仍然在使用中。

轉載註明原文: GDI + DrawImage函數