RotatedText.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Numerics;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
namespace DsPdfWeb.Demos.Basics
{
// GcPdfGraphics.Transform を使用してテキスト文字列を回転する方法を示します。
// RotatedText2 も参照してください。
public class RotatedText
{
public int CreatePDF(Stream stream)
{
// 時計回りの回転角度。
float angle = -45;
//
var doc = new GcPdfDocument();
var g = doc.NewPage().Graphics;
// テキストレイアウトを作成し、フォントとフォントサイズを選択します。
TextLayout tl = g.CreateTextLayout();
tl.DefaultFormat.FontName = "Yu Gothic";
tl.DefaultFormat.FontSize = 24;
// テキストを追加し、レイアウトを実行します。
tl.Append("回転させたテキスト");
tl.PerformLayout(true);
// テキストの挿入位置(1",1")。
var ip = new PointF(72, 72);
// テキストサイズは既にあるので、テキスト挿入位置を起点にテキスト矩形を作成します。
var rect = new RectangleF(ip.X, ip.Y, tl.ContentWidth, tl.ContentHeight);
// 矩形の中心付近でテキストを回転させます。
// テキストのサイズは既にあるので、その中央付近を中心として回転することができます。
g.Transform = Matrix3x2.CreateRotation((float)(angle * Math.PI) / 180f, new Vector2(ip.X + tl.ContentWidth / 2, ip.Y + tl.ContentHeight / 2));
// 回転したテキストと境界の矩形を描画します。
g.DrawTextLayout(tl, ip);
g.DrawRectangle(rect, Color.Black, 1);
// 回転を元に戻し、回転前のテキストがあったであろう境界の矩形を描画します。
g.Transform = Matrix3x2.Identity;
g.DrawRectangle(rect, Color.ForestGreen, 1);
// PDF ドキュメントを保存します。
doc.Save(stream);
return doc.Pages.Count;
}
}
}