Csharp/C Sharp/2D Graphics/Text Justify
Содержание
- 1 a long string that will wrap and centered both vertically and horizontally
- 2 Draw left justified text
- 3 Draw Rectangle surrounding the Text
- 4 Draw right justified text
- 5 Draw the rectangle and draw the string, using the rectangle as a bounding box
- 6 Rotate the text 45 degrees clockwise and translate the text 150 pixels horizontally
- 7 String Rectangle
- 8 This text is centered and underlined
- 9 use a 12pt font, and assume the text string must fit into a width of 150 pixels
- 10 Use tab to control the DrawString
- 11 With a 200px-width rectangle, and a 12pt font, it requires six lines to display the string in its entirety
a long string that will wrap and centered both vertically and horizontally
<source lang="csharp">
using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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); String s = "This is a long string that will wrap. "; s += "It will be centered both vertically and horizontally."; Font f = new Font("Arial", 12); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; Rectangle r = new Rectangle(10, 10, 300, f.Height * 4); g.DrawRectangle(Pens.Black, r); g.DrawString(s, f, Brushes.Black, r, sf); f.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
Draw left justified text
<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form{
public Form1() { InitializeComponent(); SetStyle(ControlStyles.Opaque, true); Bounds = new Rectangle(0, 0, 500, 300); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.FillRectangle(Brushes.White, ClientRectangle); // Draw left justified text Rectangle rect = new Rectangle(0, 0, 400, Font.Height); g.DrawRectangle(Pens.Blue, rect); g.DrawString("www.nfex.ru", Font, Brushes.Black, rect); } private void InitializeComponent() { this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } static void Main() { Application.Run(new Form1()); }
}
</source>
Draw Rectangle surrounding the Text
<source lang="csharp"> 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.PageUnit = GraphicsUnit.Inch; Pen p = new Pen(Color.Black, 1 / 96f); Font f = new Font("Times New Roman", 16); String s = "Abc"; SizeF sf = g.MeasureString(s, f); g.DrawRectangle(p, 1, 1, sf.Width, sf.Height); g.DrawString(s, f, Brushes.Black, 1, 1); f.Dispose(); p.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
Draw right justified text
<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form{
public Form1() { InitializeComponent(); SetStyle(ControlStyles.Opaque, true); Bounds = new Rectangle(0, 0, 500, 300); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.FillRectangle(Brushes.White, ClientRectangle);
// Draw right justified text Font aFont = new Font("Arial", 16, FontStyle.Bold | FontStyle.Italic); Rectangle rect = new Rectangle(0, 0, 400, aFont.Height); g.DrawRectangle(Pens.Blue, rect); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Far; g.DrawString("www.nfex.ru", aFont, Brushes.Blue, rect, sf); } private void InitializeComponent() { this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } static void Main() { Application.Run(new Form1()); }
}
</source>
Draw the rectangle and draw the string, using the rectangle as a bounding box
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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); 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(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
Rotate the text 45 degrees clockwise and translate the text 150 pixels horizontally
<source lang="csharp"> 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", 24); g.DrawString("Rotate then Translate", f, Brushes.Black, 0, 0); g.RotateTransform(45); g.TranslateTransform(150, 0); g.DrawString("Rotate then Translate ", f, Brushes.Black, 0, 0); } public static void Main() { Application.Run(new Form1()); }
}
</source>
String Rectangle
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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); String s = "AAAAAAAAAA"; 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(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
This text is centered and underlined
<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form{
public Form1() { InitializeComponent(); SetStyle(ControlStyles.Opaque, true); Bounds = new Rectangle(0, 0, 500, 300); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; g.FillRectangle(Brushes.White, ClientRectangle); // draw centered text Font cFont = new Font("Courier New", 12, FontStyle.Underline); Rectangle rect = new Rectangle(0, 0, 400, cFont.Height); g.DrawRectangle(Pens.Blue, rect); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; g.DrawString("This text is centered and underlined.", cFont, Brushes.Red, rect, sf);
} private void InitializeComponent() { this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } static void Main() { Application.Run(new Form1()); }
}
</source>
use a 12pt font, and assume the text string must fit into a width of 150 pixels
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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); String s = "This string is long enough to wrap. "; Font f = new Font("Arial", 12); SizeF sf = g.MeasureString(s, f, 150); RectangleF rf = new RectangleF(20, 20, sf.Width, sf.Height); g.DrawRectangle(Pens.Black, rf.Left, rf.Top, rf.Width, rf.Height); g.DrawString(s, f, Brushes.Black, rf); f.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
Use tab to control the DrawString
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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", 12); Font bf = new Font(f, FontStyle.Bold); StringFormat sf = new StringFormat(); float[] ts = { 10.0f, 70.0f, 100.0f, 90.0f }; sf.SetTabStops(0.0f, ts); string s1 = "\tA\tAAA\tAAAAA\tAAAAAAAAAA"; string s2 = "\tAAAAAAA\tAAAAA\tAA\tAAA"; g.DrawString(s1, bf, Brushes.Black, 20, 20, sf); g.DrawString(s2, f, Brushes.Blue, 20, 20 + bf.Height, sf); f.Dispose(); bf.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>
With a 200px-width rectangle, and a 12pt font, it requires six lines to display the string in its entirety
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; 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); String s = "This string is long enough to wrap. "; Font f = new Font("Arial", 12); Rectangle r = new Rectangle(20, 20, 200, f.Height * 6); g.DrawRectangle(Pens.Black, r); g.DrawString(s, f, Brushes.Black, r); f.Dispose(); } public static void Main() { Application.Run(new Form1()); }
}
</source>