Mark B said:
I want to draw some text (the string value of a variable) on an image:
H
E
L
L
O
Does anyone know how to do this (e.g. using g.DrawString)?
You can use the overload of DrawString which accepts the StringFormat
object.
Set the StringFormatFlags Property of StringFormat object to
StringFormatFlags.Direction Vertical.
Example Code:-
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ComponentModel;
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 = "HELLO";
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();
}
}