Csharp/C Sharp by API/System.Drawing/StringFormatFlags
StringFormatFlags.DirectionVertical
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Imaging;
public class Form1 : System.Windows.Forms.Form
{
public Form1()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Text = "";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
}
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
String s = "this is a test";
StringFormat sf = new StringFormat(StringFormatFlags.DirectionVertical);
Font f = new Font("Times New Roman", 14);
SizeF sizef = g.MeasureString(s, f, Int32.MaxValue, sf);
RectangleF rf = new RectangleF(20, 20, sizef.Width, sizef.Height);
g.DrawRectangle(Pens.Black, rf.Left, rf.Top, rf.Width, rf.Height);
g.DrawString(s, f, Brushes.Black, rf, sf);
f.Dispose();
}
private void Form1_Resize(object sender, System.EventArgs e)
{
Invalidate();
}
}
StringFormatFlags.NoClip
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using System.Windows.Forms;
class TextColumns: Form
{
public static void Main()
{
Application.Run(new TextColumns());
}
public TextColumns()
{
Font = new Font("Times New Roman", 10);
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);
int iChars, iLines;
string str = "Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text ";
StringFormat strfmt = new StringFormat();
PointF[] aptf = { new PointF(cx, cy) };
grfx.TransformPoints(CoordinateSpace.Device, CoordinateSpace.Page, aptf);
grfx.PageUnit = GraphicsUnit.Point;
grfx.TransformPoints(CoordinateSpace.Page, CoordinateSpace.Device, aptf);
float fcx = aptf[0].X;
float fcy = aptf[0].Y;
strfmt.HotkeyPrefix = HotkeyPrefix.Show;
strfmt.Trimming = StringTrimming.Word;
strfmt.FormatFlags |= StringFormatFlags.NoClip;
strfmt.SetTabStops(0, new float[] { 18 });
for (int x = 0; x < fcx && str.Length > 0; x += 156)
{
RectangleF rectf = new RectangleF(x, 0, 144,
fcy - Font.GetHeight(grfx));
grfx.DrawString(str, Font, brush, rectf, strfmt);
grfx.MeasureString(str, Font, rectf.Size, strfmt,
out iChars, out iLines);
str = str.Substring(iChars);
}
}
}
StringFormatFlags.NoWrap
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Imaging;
public class Form1 : System.Windows.Forms.Form
{
public Form1()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Text = "";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
}
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
String s = "This string is long enough to wrap. ";
Font f = new Font("Arial", 12);
Rectangle r = new Rectangle(20, 20, 150, f.Height * 4);
StringFormat sf = new StringFormat();
sf.FormatFlags = StringFormatFlags.NoWrap;
g.DrawRectangle(Pens.Black, r);
g.DrawString(s, f, Brushes.Black, r, sf);
f.Dispose();
}
private void Form1_Resize(object sender, System.EventArgs e)
{
Invalidate();
}
}