Сохранение графики в растровое изображение вне краски? - PullRequest
0 голосов
/ 29 ноября 2010

Попытка сохранить графический объект C # Winforms в растровое изображение, но я получаю ArgumentException с этим кодом вне события Paint:

public Bitmap Bitmap
{
   get
   {
       return new Bitmap(100, 100, this.Graphics);
   }
}

Где this.Graphics просто устанавливается в обработчике события Paint, я предполагаю, что объект становится недействительным вне события, что раздражает, так как я хотел бы избежать необходимости вставлять туда код для сохранения изображений. Кто-нибудь может указать мне правильное направление?

Edit: Мне нужно будет повторно учитывать мой код рисования, так как я должен быть в состоянии «нарисовать» элемент управления в растровом изображении.

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Да, это будет бомба после утилизации графического объекта. Существует мало причин для использования этого конструктора, он только устанавливает разрешение растрового изображения. Если это действительно важно для вас, просто используйте метод Bitmap.SetResolution () напрямую.

0 голосов
/ 29 ноября 2010

Если вы действительно хотите использовать графику, вы можете использовать this.CreateGraphics.

public Bitmap Bitmap
{
    get
    {
        using (var graphics = this.CreateGraphics())
        {
            return new Bitmap(100, 100, graphics);
        }
    }
}

но

return new Bitmap(100, 100);

, вероятно, будет достаточно.

Edit:
Если вы хотите изменить растровое изображение, вы создаете графический объект из этого растрового изображения:

Bitmap bitmap = new Bitmap(100, 100);
using (var graphics = Graphics.FromImage(bitmap))
{
    // modify bitmap
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...