Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 4
Application Class
Application Methods
 SetCompatibleTextRenderingDefault M...
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2010/.NET Framework 4

Other versions are also available for the following:
.NET Framework Class Library
Application..::.SetCompatibleTextRenderingDefault Method

Sets the application-wide default for the UseCompatibleTextRendering property defined on certain controls.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Visual Basic
Public Shared Sub SetCompatibleTextRenderingDefault ( _
    defaultValue As Boolean _
)
C#
public static void SetCompatibleTextRenderingDefault(
    bool defaultValue
)
Visual C++
public:
static void SetCompatibleTextRenderingDefault(
    bool defaultValue
)
F#
static member SetCompatibleTextRenderingDefault : 
        defaultValue:bool -> unit 

Parameters

defaultValue
Type: System..::.Boolean
The default value to use for new controls. If true, new controls that support UseCompatibleTextRendering use the GDI+ based Graphics class for text rendering; if false, new controls use the GDI based TextRenderer class.
ExceptionCondition
InvalidOperationException

You can only call this method before the first window is created by your Windows Forms application.

Certain Windows Forms controls can render their text using either the TextRenderer class, which is based on the GDI graphics library, or the Graphics class, which is based on the GDI+ graphics library. This change was made in the .NET Framework 2.0 because of performance and localization issues with GDI+. Use SetCompatibleTextRenderingDefault to set the default value of the UseCompatibleTextRendering property for controls that support it.

The UseCompatibleTextRendering property is intended to provide visual compatibility between Windows Forms controls that render text using the TextRenderer class and .NET Framework 1.0 and .NET Framework 1.1 applications that perform custom text rendering using the Graphics class. In most cases, if your application is not being upgraded from .NET Framework 1.0 or .NET Framework 1.1, it is recommended that you leave UseCompatibleTextRendering set to the default value of false.

The GDI based TextRenderer class was introduced in the .NET Framework 2.0 to improve performance, make text look better, and improve support for international fonts. In earlier versions of the .NET Framework, the GDI+ based Graphics class was used to perform all text rendering. GDI calculates character spacing and word wrapping differently from GDI+. In a Windows Forms application that uses the Graphics class to render text, this could cause the text for controls that use TextRenderer to appear different from the other text in the application. To resolve this incompatibility, you can set the UseCompatibleTextRendering property to true. To set UseCompatibleTextRendering to true for all supported controls in the application, call the SetCompatibleTextRenderingDefault method with a parameter of true.

You should never call this method if your Windows Forms code is hosted in another application, such as Internet Explorer. Only call this method in stand-alone Windows Forms applications.

Important noteImportant

To set the default value for UseCompatibleTextRendering in Visual Basic 2005 or later, see WindowsFormsApplicationBase..::.UseCompatibleTextRendering.

In Visual C# 2005 or later, a call to SetCompatibleTextRenderingDefault is automatically generated in the Program.cs file. To change the text rendering default, modify the generated code.

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Answer      motty1   |   Edit   |   Show History
I take it that, although GDI+ is newer than GDI. the .net class Graphics (GDI+ based) is older than the class TextRenderer (GDI based).
Probably class Graphics is just a wrapper for GDI+ which renders on the CPU, whereas TextRenderer only plans the glyphs positioning smartly on the CPU and then uses GDI to render them on the device.
Therefore the text in this page is correct. (That is, UseCompatibleTextRendering=true makes use of the older .net class Graphics, which in turn makes use of the newer infrastructure...)

See also:
http://blogs.msdn.com/b/jfoscoding/archive/2005/10/13/480632.aspx
http://en.wikipedia.org/wiki/Graphics_Device_Interface#Windows_XP


Tags What's this?: Add a tag
Flag as ContentBug
Discrepency in documentation      timfriesen   |   Edit   |   Show History
This page indicates the following:
"If true, new controls that support UseCompatibleTextRendering use the GDI+ based Graphics class for text rendering; if false, new controls use the GDI based TextRenderer class."

Whereas my local documentation on my Visual Studio 2008 indicates:
"If true, new controls that support UseCompatibleTextRendering use GDI for text rendering; if false, new controls use GDI+."

There seems to be a discrepency. Which one is accurate?
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker