Classe LogFont
Aggiornamento: novembre 2007
Definisce le caratteristiche di un tipo di carattere per la creazione di effetti di rotazione del testo.
Spazio dei nomi: Microsoft.WindowsCE.Forms
Assembly: Microsoft.WindowsCE.Forms (in Microsoft.WindowsCE.Forms.dll)
Sintassi
'Dichiarazione
Public Class LogFont
'Utilizzo
Dim instance As LogFont
public class LogFont
public ref class LogFont
public class LogFont
Note
Questa classe corrisponde alla struttura LOGFONT (Logical Font) nativa di Windows CE, che consente di creare effetti di angolazione del testo e di altro tipo. I valori di alcuni dei campi di LogFont sono definiti dalle enumerazioni descritte nella seguente tabella.
Enumerazione |
Descrizione |
---|---|
Specifica il set di caratteri del tipo di carattere. |
|
Specifica come ritagliare i caratteri che si trovano in parte all'esterno dell'area di visualizzazione. |
|
Specifica la famiglia di caratteri che descrive il tipo di carattere in modo generale. |
|
Specifica in quale misura l'output deve corrispondere ai valori richiesti per l'altezza, lo spessore e altri attributi di un tipo di carattere. |
|
Specifica la qualità del tipo di carattere. |
|
Specifica lo spessore del tipo di carattere. |
Per creare testo ruotato, creare un'istanza della classe LogFont e impostare il campo Escapement sull'angolo di rotazione desiderato. Si osservi che per il campo Escapement è necessario specificare l'angolo in decimi di grado. Per un angolo di 45 gradi, specificare 450.
Il campo Escapement specifica sia l'angolo di rotazione che l'orientamento. Impostare lo stesso valore per i campi Escapement e Orientation.
L'utilità di mapping dei tipi di carattere, un componente di Windows CE, trova il tipo di carattere fisico che corrisponde maggiormente ai valori specificati per i campi Height e Weight.
Esempi
Nell'esempio di codice riportato di seguito viene illustrato come definire un oggetto LogFont affinché il testo scorra in diagonale sullo schermo.
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());
}
}
}
Gerarchia di ereditarietà
System.Object
Microsoft.WindowsCE.Forms.LogFont
Codice thread safe
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Piattaforme
Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Informazioni sulla versione
.NET Compact Framework
Supportato in: 3.5, 2.0
Vedere anche
Riferimenti
Spazio dei nomi Microsoft.WindowsCE.Forms