GDI + функция DrawImage - PullRequest
       19

GDI + функция DrawImage

1 голос
/ 17 апреля 2010

Я что-то упускаю. Скажем, у меня есть следующий код:

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);

Моя цель - увеличить 10х10 пикселей в верхнем левом углу исходного изображения. После того, как я создал графический объект g и назвал DrawImage: запрошенный прямоугольник (toZoom) будет скопирован в bmp, или он будет отображаться на экране? Я немного запутался, кто-нибудь может уточнить?

Ответы [ 2 ]

1 голос
/ 17 апреля 2010

Ваш код выдаст вам только растровое изображение в памяти (которое не будет автоматически отображаться на экране). Простой способ отобразить это было бы поместить 100 x 100 PictureBox в вашу форму и установить его свойство Image следующим образом (используя Bitmap из вашего кода выше):

pictureBox1.Image = bmp;

Кроме того, вам понадобится несколько using блоков в вашем коде:

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;
}

Обратите внимание, что нет блока using с bmp - это потому, что вы устанавливаете его в качестве свойства Image Picture Box. Блок using автоматически вызывает метод Dispose объекта в конце области видимости блока, чего вы не хотите делать, поскольку он все еще будет использоваться.

0 голосов
/ 17 апреля 2010

будет скопировано и не отображается.

...