Partager via


LogFont, classe

Mise à jour : novembre 2007

Définit les caractéristiques d'une police pour la création d'effets de texte ayant subi une rotation.

Espace de noms :  Microsoft.WindowsCE.Forms
Assembly :  Microsoft.WindowsCE.Forms (dans Microsoft.WindowsCE.Forms.dll)

Syntaxe

'Déclaration
Public Class LogFont
'Utilisation
Dim instance As LogFont
public class LogFont
public ref class LogFont
public class LogFont

Notes

Cette classe correspond à la structure LOGFONT (police logique) Windows CE native, qui offre la possibilité de créer des effets de texte d'angle ainsi que d'autres effets de texte. Les valeurs de certains champs LogFont sont définies par les énumérations décrites dans le tableau suivant.

Énumération

Description

CharSet

Spécifie le jeu de caractères de la police.

ClipPrecision

Spécifie comment découper des caractères se trouvant partiellement hors de la zone de découpage.

PitchAndFamily

Spécifie la famille de polices qui décrit la police de manière générale.

OutPrecision

Spécifie avec quelle précision la sortie doit correspondre à la hauteur, à l'épaisseur et à d'autres attributs requis d'une police.

Quality

Spécifie la qualité de la police.

Weight

Spécifie l'épaisseur de la police.

Pour créer du texte ayant subi une rotation, créez une instance de la classe LogFont et affectez l'angle de rotation souhaité au champ Escapement. Notez que Escapement spécifie l'angle en dixièmes de degrés ; pour un angle de 45 degrés, vous devez spécifier 450.

Le champ Escapement spécifie à la fois l'échappement et l'orientation. Vous devez définir Escapement et Orientation avec la même valeur.

Le mappeur de polices, un composant de Windows CE, trouve la police physique la plus proche des valeurs spécifiées pour les champs Height et Weight.

Exemples

L'exemple de code suivant montre comment définir LogFont de sorte que le texte apparaisse en diagonale sur l'écran.

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.WindowsCE.Forms

Public Class Form1
    Inherits System.Windows.Forms.Form

    ' Declare objects to draw the text.
    Private rotatedFont As System.Drawing.Font
    Private redBrush As SolidBrush

    ' Specify the text to roate, the rotation angle,
    ' and the base font.
    Private rTxt As String = "abc ABC 123"
    Private rAng As Integer = 45

    ' Determine the vertial DPI setting for scaling the font on the
    ' device you use for developing the application. 
    ' You will need this value for properly scaling the font on
    ' devices with a different DPI.
    ' In another application, get the DpiY property from a Graphics object 
    ' on the device you use for application development:
    ' 
    '   Dim g As Graphics = Me.CreateGraphics()
    '   Dim curDPI As Integer = g.DpiY

    Private Const curDPI As Integer = 96

    ' Note that capabilities for rendering a font are 
    ' dependant on the device.
    Private rFnt As String = "Arial"

    Public Sub New()
        MyBase.New()

        ' Display OK button to close application.
        Me.MinimizeBox = False
        Me.Text = "Rotated Font"

        ' Create rotatedFont and redBrush objects in the custructor of
        ' the form so that they can be resued when the form is repainted.
        Me.rotatedFont = CreateRotatedFont(rFnt, rAng)
        Me.redBrush = New SolidBrush(Color.Red)
    End Sub

    ' Method to create a rotated font using a LOGFONT structure.
    Private Function CreateRotatedFont(ByVal fontname As String, _
        ByVal angleInDegrees As Integer) As Font

        Dim logf As LogFont = New Microsoft.WindowsCE.Forms.LogFont

        ' Create graphics object for the form, and obtain
        ' the current DPI value at design time. In this case,
        ' only the vertical resolution is petinent, so the DpiY
        ' property is used. 
        Dim g As Graphics = Me.CreateGraphics

        ' Scale an 18-point font for current screen vertical DPI.
        logf.Height = Fix(-18.0F * g.DpiY / curDPI)

        ' Convert specified rotation angle to tenths of degrees.
        logf.Escapement = (angleInDegrees * 10)

        ' Orientation is the same as Escapement in mobile platforms.
        logf.Orientation = logf.Escapement

        logf.FaceName = fontname

        ' Set LogFont enumerations.
        logf.CharSet = LogFontCharSet.Default
        logf.OutPrecision = LogFontPrecision.Default
        logf.ClipPrecision = LogFontClipPrecision.Default
        logf.Quality = LogFontQuality.ClearType
        logf.PitchAndFamily = LogFontPitchAndFamily.Default

        ' Explicitly dispose any drawing objects created.
        g.Dispose()

        Return System.Drawing.Font.FromLogFont(logf)
    End Function

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        If (Me.rotatedFont Is Nothing) Then
            Return
        End If
        ' Draw the text to the screen using the LogFont, starting at
        ' the specified coordinates on the screen.
        e.Graphics.DrawString(rTxt, Me.rotatedFont, Me.redBrush, _
            75, 125, New StringFormat( _
            (StringFormatFlags.NoWrap Or StringFormatFlags.NoClip)))
    End Sub

    Protected Overrides Sub Dispose(ByVal disposing As Boolean)

        ' Dispose created graphic objects. Although they are 
        ' disposed by the garbage collector when the application
        ' terminates, a good practice is to dispose them when they
        ' are no longer needed.
        Me.redBrush.Dispose()
        Me.rotatedFont.Dispose()
        MyBase.Dispose(disposing)
    End Sub

    Public Shared Sub Main()
        Application.Run(New Form1)
    End Sub
End Class
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.WindowsCE.Forms;

namespace LogFontDemo
{
    public class Form1 : System.Windows.Forms.Form
    {
        // Declare objects to draw the text.
        Font rotatedFont;
        SolidBrush redBrush;

        // Specify the text to roate, the rotation angle,
        // and the base font.
        private string rTxt = "abc ABC 123";
        private int rAng = 45;

    // Determine the vertial DPI setting for scaling the font on the 
    // device you use for developing the application.
    // You will need this value for properly scaling the font on
    // devices with a different DPI.
    // In another application, get the DpiY property from a Graphics object 
    // on the device you use for application development:
    // 
    //   Graphics g = this.CreateGraphics();
    //   int curDPI = g.DpiY;

        private const int curDPI = 96;

        // Note that capabilities for rendering a font are
        // dependant on the device.
        private string rFnt = "Arial";

        public Form1()
        {
            // Display OK button to close application.
            this.MinimizeBox = false;
            this.Text = "Rotated Font";

            // Create rotatedFont and redBrush objects in the custructor of
            // the form so that they can be resued when the form is repainted.
            this.rotatedFont = CreateRotatedFont(rFnt, rAng);
            this.redBrush    = new SolidBrush(Color.Red);
        }

        // Method to create a rotated font using a LOGFONT structure.
        Font CreateRotatedFont(string fontname, int angleInDegrees)
        {
            LogFont logf = new Microsoft.WindowsCE.Forms.LogFont();

            // Create graphics object for the form, and obtain
            // the current DPI value at design time. In this case,
            // only the vertical resolution is petinent, so the DpiY
            // property is used. 

            Graphics g = this.CreateGraphics();
            // Scale an 18-point font for current screen vertical DPI.
            logf.Height = (int)(-18f * g.DpiY / curDPI);

            // Convert specified rotation angle to tenths of degrees.  
            logf.Escapement = angleInDegrees * 10;

            // Orientation is the same as Escapement in mobile platforms.
            logf.Orientation = logf.Escapement;

            logf.FaceName = fontname;

            // Set LogFont enumerations.
            logf.CharSet        = LogFontCharSet.Default;
            logf.OutPrecision   = LogFontPrecision.Default;
            logf.ClipPrecision  = LogFontClipPrecision.Default;
            logf.Quality        = LogFontQuality.ClearType;
            logf.PitchAndFamily = LogFontPitchAndFamily.Default;

            // Explicitly dispose any drawing objects created.
            g.Dispose();

            return Font.FromLogFont(logf);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            if(this.rotatedFont == null)
                return;

            // Draw the text to the screen using the LogFont, starting at
            // the specified coordinates on the screen.
            e.Graphics.DrawString(rTxt,
                this.rotatedFont,
                this.redBrush,
                75,
                125,
                new StringFormat(StringFormatFlags.NoWrap |
                     StringFormatFlags.NoClip));
        }

        protected override void Dispose(bool disposing)
        {

            // Dispose created graphic objects. Although they are 
            // disposed by the garbage collector when the application
            // terminates, a good practice is to dispose them when they
            // are no longer needed.
            this.redBrush.Dispose();
            this.rotatedFont.Dispose();
            base.Dispose(disposing);
        }

        static void Main()
        {
            Application.Run(new Form1());
        }
    }
}

Hiérarchie d'héritage

System.Object
  Microsoft.WindowsCE.Forms.LogFont

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Plateformes

Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Compact Framework

Pris en charge dans : 3.5, 2.0

Voir aussi

Référence

Membres LogFont

Microsoft.WindowsCE.Forms, espace de noms

Autres ressources

Texte pivoté avec LogFont, exemple