Reputation: 6061
I'm writing a C# (ActiveX) plugin for an application that uses SetCompatibleTextRenderingDefault(true)
(forces .net 1.1 text rendering style) This setting mangles some of the text I output with Graphics.DrawString() causing it to look slightly smudged and bolded. Unlike individual controls neither the Graphics
class nor the BitMap
have UseCompatibleTextRendering
properties that can be used to override the individual behavior. Short of fiddling around to try and figure out what's special about the places where I'm drawing text that doesn't get mangled is there anything I can do about this?
The app my plugin is for belongs to a third party so simply changing the SetCompatibleTextRenderingDefault
call it inflicts on me is not an option.
Edit: The 'special' thing appears to be the color of the background and how it's affecting the anti-aliasing used; so fiddling to fix it by how I setup the rectangles doesn't seem to be an option.
Upvotes: 1
Views: 1256
Reputation: 6061
I found a fix for my problem by changing the TextRenderingHint
to SingleBitPerPixelGridFit
which is the default when not using compatible text rendering. When it's instead set to true it uses a the ClearType enumeration except that for whatever reason unlike normal cleartype text the results are ugly and extremely hard to read.
textGraphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
Upvotes: 1
Reputation: 13621
I'd advise using TextRenderer.DrawText
instead of Graphics.DrawString
- even with compatible text rendering disabled, it seems to produce crisper, more consistent results.
Upvotes: 2