Как создать растровый объект из графического объекта?
Как создать растровый объект из графического объекта? Я хотел бы прочитать пиксели из моего графического объекта. например, например, 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 ответа
В идеале вы хотите избежать GetPixel/SetPixel и использовать небезопасные методы доступа к растровому изображению для некоторой скорости.
System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage (bitmap);
затем используйте графический экземпляр. Если я помню, изменение графического объекта изменяет растровое изображение.
(очень поздно, но...)
Ты пытался
var bmp = System.Drawing.Bitmap.FromHbitmap(gr.GetHdc());
Тогда вы можете прочитать пиксели из bmp
,
Сначала вы должны создать растровое изображение, затем создать графику из этого растрового изображения, работать с графикой и после этого сохранять (или работать с ней) растровое изображение.
Ваш код будет выглядеть так:
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.