Csharp/C Sharp/2D Graphics/Text Rendering
Содержание
- 1 Draw string with hatch brush
- 2 DrawString with solid brush and rectangle
- 3 DrawString with solid brush, string format
- 4 Hotkey Prefix
- 5 TextRenderingHint: Anti-Aliased Text
- 6 Text Rendering Hint: AntiAliasGridFit
- 7 Text Rendering Hint: ClearTypeGridFit
- 8 Text Rendering Hint: SingleBitPerPixelGridFit
- 9 Use TexturedBrush to draw string
Draw string with hatch brush
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form {
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
Font f = new Font("Times New Roman", 48, FontStyle.Bold);
HatchBrush hb = new HatchBrush(HatchStyle.Cross,Color.White, Color.Black);
g.DrawString("Crazy Crosshatch", f, hb, 0, 0);
f.Dispose();
}
public static void Main() {
Application.Run(new Form1());
}
}
DrawString with solid brush and rectangle
using System;
using System.Drawing;
using System.Windows.Forms;
class HuckleberryFinnHalfHeight: Form
{
public static void Main()
{
Application.Run(new HuckleberryFinnHalfHeight());
}
public HuckleberryFinnHalfHeight()
{
ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs pea)
{
Graphics grfx = pea.Graphics;
int cx = ClientSize.Width;
int cy = ClientSize.Height;
Pen pen = new Pen(ForeColor);
Rectangle rect = new Rectangle(0, 0, cx / 2, cy / 2);
grfx.DrawString("some", Font, new SolidBrush(ForeColor), rect);
grfx.DrawLine(pen, 0, cy / 2, cx / 2, cy / 2);
grfx.DrawLine(pen, cx / 2, 0, cx / 2, cy / 2);
}
}
DrawString with solid brush, string format
using System;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
class BoldAndItalicTighter: Form
{
public static void Main()
{
Application.Run(new BoldAndItalicTighter());
}
public BoldAndItalicTighter()
{
Text = "Bold and Italic (Tighter)";
Font = new Font("Times New Roman", 24);
ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs pea)
{
DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);
}
protected void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
string str = "text.";
Brush brush = new SolidBrush(clr);
Font fontRegular = Font;
Font fontBold = new Font(fontRegular, FontStyle.Bold);
Font fontItalic = new Font(fontRegular, FontStyle.Italic);
PointF ptf = new PointF(0, 0);
StringFormat strfmt = StringFormat.GenericTypographic;
strfmt.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;
grfx.DrawString(str, fontRegular, brush, ptf, strfmt);
}
}
Hotkey Prefix
using System;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
class UnderlinedText: Form
{
public static void Main()
{
Application.Run(new UnderlinedText());
}
public UnderlinedText()
{
Text = "Underlined Text Using HotkeyPrefix";
Font = new Font("Times New Roman", 14);
ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs pea)
{
DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);
}
protected void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
string str = "This is some &u&n&d&e&r&l&i&n&e&d text!";
StringFormat strfmt = new StringFormat();
strfmt.HotkeyPrefix = HotkeyPrefix.Show;
grfx.DrawString(str, Font, new SolidBrush(clr), 0, 0, strfmt);
}
}
TextRenderingHint: Anti-Aliased Text
using System;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
class AntiAliasedText: Form
{
public static void Main()
{
Application.Run(new AntiAliasedText());
}
public AntiAliasedText()
{
Font = new Font("Times New Roman", 12);
ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs pea)
{
DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);
}
protected void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
Brush brush = new SolidBrush(clr);
string str = "A ";
int cxText = (int) grfx.MeasureString(str, Font).Width;
for (int i = 0; i < 6; i++)
{
grfx.TextRenderingHint = (TextRenderingHint)i;
grfx.DrawString(str, Font, brush, i * cxText, 0);
}
}
}
Text Rendering Hint: AntiAliasGridFit
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Text;
public class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void SmoothingText_Paint(object sender, PaintEventArgs e)
{
Font TextFont = new Font("Times New Roman", 25, FontStyle.Italic);
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
e.Graphics.DrawString("www.nfex.ru", TextFont, Brushes.Black, 20, 20);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// SmoothingText
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(472, 315);
this.Name = "SmoothingText";
this.Text = "SmoothingText";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.SmoothingText_Paint);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Text Rendering Hint: ClearTypeGridFit
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Text;
public class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void SmoothingText_Paint(object sender, PaintEventArgs e)
{
Font TextFont = new Font("Times New Roman", 25, FontStyle.Italic);
e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
e.Graphics.DrawString("www.nfex.ru", TextFont, Brushes.Black, 20, 20);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// SmoothingText
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(472, 315);
this.Name = "SmoothingText";
this.Text = "SmoothingText";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.SmoothingText_Paint);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Text Rendering Hint: SingleBitPerPixelGridFit
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Text;
public class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void SmoothingText_Paint(object sender, PaintEventArgs e)
{
Font TextFont = new Font("Times New Roman", 25, FontStyle.Italic);
e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
e.Graphics.DrawString("www.nfex.ru", TextFont, Brushes.Black, 20, 20);
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// SmoothingText
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(472, 315);
this.Name = "SmoothingText";
this.Text = "SmoothingText";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.SmoothingText_Paint);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Use TexturedBrush to draw string
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class MainForm : Form {
private Brush texturedTextBrush;
private Brush texturedBGroundBrush;
public MainForm() {
Image bGroundBrushImage = new Bitmap("Clouds.bmp");
texturedBGroundBrush = new TextureBrush(bGroundBrushImage);
Image textBrushImage = new Bitmap("Soap Bubbles.bmp");
texturedTextBrush = new TextureBrush(textBrushImage);
}
protected void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
Rectangle r = ClientRectangle;
g.FillRectangle(texturedBGroundBrush, r);
g.DrawString("Bitmaps as brushes",
new Font("Arial", 30,
FontStyle.Bold | FontStyle.Italic),
texturedTextBrush,
r);
}
public static void Main(){
Application.Run(new MainForm());
}
}