В GDI+ не всегда работает Bitmap::SetPixel
От: sv_kolebanov  
Дата: 18.01.03 13:18
Оценка:
При помощи GDI+
требуется создать черно-белый Bitmap
и порисовать в нем попиксельно

Написал код:

// Creating 1-bit-per-pixel bitmap
Bitmap bitmap01(500, 300, PixelFormat1bppIndexed);

UINT size = bitmap01.GetPaletteSize();
ColorPalette* palette = (ColorPalette*)malloc(size);

bitmap01.GetPalette(palette, size);

palette->Flags = PaletteFlagsGrayScale;
palette->Entries[0] = Color::MakeARGB(255, 0, 0, 0);
palette->Entries[1] = Color::MakeARGB(255, 255, 255, 255);
bitmap01.SetPalette(palette);

bitmap01.SetPixel(10,20 , Color(palette->Entries[1]));


Последняя команда выполняется некорректно, в отличие от предыдущих команд, и выдает InvalidParameter. Пиксел не устанавливается.
Re: В GDI+ не всегда работает Bitmap::SetPixel
От: Аноним  
Дата: 03.08.06 12:55
Оценка:
Если картинка индексированная (например gif, 256 цветов), то любая операция из {SetPixel(), DrawRectangle(), GetNearestColor()} возвращает InvalidParameter.
Почему, как с этим сладить? Хочется нарисовать в gif красную линию.
Помогите плз кто знает — очень нужно.

Не работает даже такая связка
GetPixel(1, 1, &color); // успешно берет цвет
SetPixel(1, 1, color); // возвращает InvalidParameter.

В случае же true-color юиьз — всё в порядке.
Re[2]: В GDI+ не всегда работает Bitmap::SetPixel
От: Аноним  
Дата: 03.08.06 13:01
Оценка:
Пробовал получить true-color клон
Bitmap img0 (swName);
Bitmap *img = img0.Clone(0, 0, img0.GetWidth(), img0.GetHeight(), PixelFormat32bppARGB);

не помогает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.