Как создать растровый объект из графического объекта? - PullRequest
3 голосов
/ 11 июня 2010

Как создать растровый объект из графического объекта? Я хотел бы прочитать пиксели из моего графического объекта. например, например, System.Drawing.BitMap.GetPixel ().

Я пытаюсь найти пустую область (полностью белого или любого цвета) внутри документа PDF, чтобы написать графику / изображение. Я пытался так, но это не работает. почему следующий код не работает должным образом?

//
// System.Drawing.Bitmap
// System.Drawing.Graphics
//
Bitmap b = new Bitmap(width, height, graphics);

//
// In this case, for any (i, j) values, Bitmap.GetPixel returns 0
//
int rgb = b.GetPixel(i, j).ToArgb();

(повторная публикация этого вопроса в контексте .net, удаление других зависимостей библиотеки)

Ответы [ 3 ]

0 голосов
/ 11 июня 2010

Сначала вы должны создать растровое изображение, затем создать графику из этого растрового изображения, работать с графикой и после этого сохранять (или работать с ней) растровое изображение.

Ваш код будет таким:

using (Bitmap image = new Bitmap(X, Y))
{
    using (Graphics gr = Graphics.FromImage(image))
    {
        // work with graphics, Draw objects
    }
    image.Save("YourPathToFile"); // Or GetPixel, if you want
}

Ваш код не работает, как вы исключили, потому что конструктор Bitmap получает графику только для разрешения. MSDN говорит Initializes a new instance of the Bitmap class with the specified size and with the resolution of the specified Graphics object.

0 голосов
/ 26 июня 2014

(очень поздно, но ...)

Вы пробовали

var bmp = System.Drawing.Bitmap.FromHbitmap(gr.GetHdc());

Тогда вы можете прочитать пиксели из bmp.

0 голосов
/ 11 июня 2010

В идеале вы хотите избежать GetPixel / SetPixel и использовать небезопасные методы доступа к растровому изображению для некоторой скорости.

System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage (bitmap);

затем используйте графический экземпляр. Если я помню, изменение графического объекта изменяет растровое изображение.

...