2012年1月26日 星期四

文字設定

如何在圖形中加入文字

步驟如下:

Graphics graphic = this.CreateGraphics();
Font font = new Font("標楷體", 18, FontStyle.Bold);
graphic.DrawString("生日快樂!", font, Brushes.Blue, 10, 10);

如何控制文字格式

StringFormat 類別封裝了文字的配置資訊,建立 StringFormat 執行個體,再將它指定給 Graphics.DrawString 方法,即可達到控制文字格式。 StringFormat 的幾個重要屬性如下:

  • Alignment :水平對齊方式
    • StringAlignment.Center :指定文字對齊配置矩形的中央。
    • StringAlignment.Near :指定文字應該靠近配置來對齊。 在由左至右的配置中,近端位置是左方。 在由右至左的配置中,近端位置是右方。
    • StringAlignment.Far :指定文字對齊配置矩形原始位置的遠端位置。
  • FormatFlags :設定格式資訊
    • StringFormatFlags.DirectionRightToLeft :文字會由右至左顯示。
    • StringFormatFlags.DirectionVertical :文字會垂直對齊。
    • StringFormatFlags.NoWrap :停用在矩形中進行格式化時的行間文字換行功能。
    • StringFormatFlags.NoClip :允許顯示圖像的突出部分和超出格式化矩形外部的未換行文字。預設值會被裁剪
  • LineAlignment :垂直對齊方式
    • StringAlignment.Center :指定文字對齊配置矩形的中央。
    • StringAlignment.Near :定文字應該靠近配置來對齊。
    • StringAlignment.Far :指定文字對齊配置矩形原始位置的遠端位置。
  • Trimming :文字超過配置區塊時的修剪樣式
    • StringTrimming.Character :指定將文字修剪為最接近的字元。
    • StringTrimming.EllipsisCharacter :指定文字修剪為最接近的字元,並且在修剪行的末端插入省略號。
    • StringTrimming.None :不指定修剪
Graphics g = this.CreateGraphics();
// Construct a new Rectangle.
Rectangle r = new Rectangle(new Point(40, 40), new Size(80, 80));

// Construct 2 new StringFormat objects
StringFormat f1 = new StringFormat(StringFormatFlags.NoClip);
StringFormat f2 = new StringFormat(f1);
StringFormat f3 = new StringFormat(f1);

// Set the LineAlignment and Alignment properties for
// both StringFormat objects to different values.

f1.LineAlignment = StringAlignment.Near;    //垂直置頂
f1.Alignment = StringAlignment.Center;      //水平置中

f2.LineAlignment = StringAlignment.Center;  //垂直置中
f2.Alignment = StringAlignment.Far;         //水平置右

f2.FormatFlags = StringFormatFlags.DirectionVertical;

f3.LineAlignment = StringAlignment.Center;  //垂直置中
f3.Alignment = StringAlignment.Far;         //水平置右

// Draw the bounding rectangle and a string for each StringFormat object.
g.DrawRectangle(Pens.Black, r);
g.DrawString("Format1", this.Font, Brushes.Red, (RectangleF)r, f1);
g.DrawString("Format2", this.Font, Brushes.Red, (RectangleF)r, f2);
g.DrawString("Format3", this.Font, Brushes.Blue, (RectangleF)r, f3);

Bitmap bmap1 = new Bitmap("北大武山.jpg");
Bitmap bmap2 = new Bitmap("copyright.gif");

//將圖2貼到圖1左上角
Graphics graph = Graphics.FromImage(bmap1);
graph.DrawImage(bmap2, 0, 0);
            
//在圖1之右下角輸出文字
Font f = new Font("Brush Script MT", 24 ,FontStyle.Italic);
Brush b = new SolidBrush(Color.White);
Brush bb = new SolidBrush(Color.Black);
string ct = "北大武山";

int x = bmap1.Width - 300;
int y = bmap1.Height - 50;

graph.DrawString(ct, f, b, x, y);
graph.DrawString(ct, f, bb, x - 1, y - 1);
graph.DrawString(ct, f, bb, x - 1, y + 1);
graph.DrawString(ct, f, bb, x + 1, y - 1);
graph.DrawString(ct, f, bb, x + 1, y + 1);
graph.DrawString(ct, f, b, x, y);

bmap1.Save("北大武山2.jpg");

沒有留言:

張貼留言