2016-02-09 2 views
1

Я на самом деле пытаюсь добавить текст к изображению в C# сПопытки добавить прозрачный текст с TextRenderer.DrawText в растровом изображение

System.Windows.Forms.TextRenderer.DrawText(Graphics, string, Rectangle, Color, TextFormaFlags) 

Я готовлю мой образ (который является PNG) путем загрузки он в памяти, с чем-то похожим на

Image image = ImageCache.Get(...); 
bitmap = new Bitmap(image); 
graphic = Graphics.FromImage(bitmap); 

Затем я рисую текст с помощью приведенной выше команды. Проблема в том, что все, что я использую для цвета, даже что-то вроде

System.Drawing.Color.FromArgb(0,255,255,255) 

прозрачность не нарисована. Я пробовал много настроек для

graphics.TextRenderingHint 

и различные сочетания шрифтов, уровень прозрачности и т. Д. Что-то я здесь не понимаю? Любые намеки приветствуются.

спасибо.

+0

Используйте 'Color.Transparent' как' BackColor' или используйте 'Graphics.DrawString'. Смотрите: [TextRenderer.DrawText в Bitmap vs OnPaintBackground] (http://stackoverflow.com/q/849531/880990) –

+0

Если вам нужны эффекты альфа-смешивания, тогда вы должны использовать Graphics.DrawString(), TextRenderer использует GDI, который ограничен RGB. –

+0

@ Hans Passant Ну, а не ответ, который я хотел услышать, но хорошо знать. Если вы напишете его как официальный ответ, я приму его. –

ответ

1

Как упоминалось в комментариях: если вы пытаетесь сделать прозрачный текст с

System.Windows.Forms.TextRenderer.DrawText 

потому, что вы обратите внимание на преимущества, принесенных GDI в C#, вы просто не можете. Используйте

System.Drawing.Graphics.DrawString 

вместо этого, даже если результат для обертывания слов немного уступает GDI +.

Смежные вопросы