Моя проблема: если я нарисую текст непосредственно на CImage, ранее загруженном из файла .PNG. сам текст прозрачен (вы можете видеть цвет фона через него), и нет способа получить желаемый цвет.Установите цвет текста при рисовании непосредственно на CImage, загруженном из .png
CImage image;
image.Load ("myimage.png") ;
//Draw some text
HDC dc = image.GetDC();
SetTextColor (dc, RGB(0 , 0 , 0)); ///< I think the problem is here
DrawText (dc, "Hello world!", -1, CRect (0 , 0 , 200 , 200), 0);
image.ReleaseDC();
//Render of the image somewhere
image.Draw (someOutDC , 0 , 0);
Я пробовал разные значения RGB и .PNG с прозрачным цветом или без него, но с таким же результатом. Только если я загружаюсь из .BMP или .JPG, он работает (но мне нужен .PNG). Есть что-то о .PNG, но я понятия не имею, как правильно установить цвет текста.
Я забыл сказать, что я также попробовал Альфа RGB, как это:
SetTextColor (dc , RGB (0,0,0) + 255 << 24);
... но ничего изменить ... какие-нибудь предложения?
Это звучит как CImage делает 32bit DIB из файла PNG. К сожалению, функции GDI для рисования текста (полезно) управляют 24 битами RGB - они устанавливают 8 альфа-бит в 0. Решение состоит в использовании функций рисования текста GDI +, которые работают с полными 32 битами. – enhzflep
Я думаю, что вы правы, я собираюсь исследовать, как это сделать. – prompt
Вот и все, я использовал GDI + и отлично работает. Мне жаль, что мой счет слишком низок, что я не могу отвечать за себя до завтра. – prompt