Любая возможность использовать Graphics.DrawString на растровое изображение 1bpp? - PullRequest
2 голосов
/ 03 октября 2011

Вопрос довольно понятен, я хотел бы использовать растровое изображение 1bpp, потому что это поможет мне (очень) общаться с устройством, которое принимает растровые изображения 1bbp (ну, массив размером 160x43 байта, который является растровым изображением 160x43 с форматом 1bpp) .

Хотя C # позволяет мне создавать растровые изображения размером 1 бит на пиксель, я бы хотел работать с ним с помощью графического объекта. Но программа, кажется, ведет себя странно, когда я делаю любую операцию с этим.

Можно ли выполнять графические операции над растровыми изображениями такого типа?

мой фрагмент кода довольно короткий:

    Bitmap bwImage = new Bitmap(160, 43, System.Drawing.Imaging.PixelFormat.Format1bppIndexed);
        using (Graphics g = Graphics.FromImage(bwImage))
        {
            g.FillRectangle(Brushes.White, new Rectangle(0, 0, 160, 43));
            g.DrawString("ciao sono francesco", Font, Brushes.Black, new RectangleF(0f, 0f, 159f, 42f));
        } 

Когда я делаю что-либо, связанное с растровыми изображениями после этих вызовов. Мои растровые изображения не меняются (очевидно, я говорю о других растровых изображениях). Например, если GDI полностью мертв

Есть идеи?

1 Ответ

4 голосов
/ 03 октября 2011

Класс Graphics и метод Graphics.FromImage не поддерживают индексированные растровые изображения. Пожалуйста, обратитесь к документации для Graphics.FromImage метода на MSDN . Обходной путь для вашей проблемы - выполнить все графические операции в поддерживаемом растровом формате, например PixelFormat.Format32bppRgb, а затем преобразовать растровое изображение в индексированное растровое изображение. Преобразование является простым. Вы найдете пример такого преобразования здесь .

Надеюсь, это поможет.

...