ReoGrid Version 4をリリースしました。多数の新機能に対応し、機能性・パフォーマンスの両面で大幅に強化されています。新機能の詳細については、こちらをご覧ください。
図形描画

概要

ReoGrid では、矩形・楕円・直線・菱形・角丸矩形・パイ(扇形)・ブロック円弧などの図形をワークシート上に直接追加できます。図形は worksheet.FloatingObjects コレクションで管理され、unvell.ReoGrid.Drawing.Shapes 名前空間に属しています。

using unvell.ReoGrid.Drawing;
using unvell.ReoGrid.Drawing.Shapes;

図形をワークシートに追加する

図形インスタンスを作成し、位置・サイズを設定したあとに FloatingObjects に追加します。

var worksheet = grid.CurrentWorksheet;

var rect = new RectangleShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(160, 80),
    Text = "Hello ReoGrid",
};

worksheet.FloatingObjects.Add(rect);

Location / Size / Bounds による位置指定はすべての図形に共通です。

利用可能な図形の種類

矩形(Rectangle)

var rect = new RectangleShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(160, 80),
};
worksheet.FloatingObjects.Add(rect);

楕円(Ellipse)

var ellipse = new EllipseShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(120, 80),
};
worksheet.FloatingObjects.Add(ellipse);

菱形(Diamond)

var diamond = new DiamondShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(120, 80),
};
worksheet.FloatingObjects.Add(diamond);

角丸矩形(Rounded Rectangle)

RoundRate(0.0 〜 1.0)で角の丸みを指定します。1.0 に近いほど円に近くなります。

var rounded = new RoundedRectangleShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(160, 80),
    RoundRate = 0.3f,
};
worksheet.FloatingObjects.Add(rounded);

パイ(Pie/扇形)

var pie = new PieShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(120, 120),
    StartAngle = 0f,
    SweepAngle = 270f,
};
worksheet.FloatingObjects.Add(pie);

ブロック円弧(Block Arc)

var arc = new BlockArcShape()
{
    Location = new Graphics.Point(60, 90),
    Size = new Graphics.Size(120, 120),
    StartAngle = -90f,
    SweepAngle = 180f,
    ArcWidth = 20f,
};
worksheet.FloatingObjects.Add(arc);

直線(Line)

StartPointEndPoint で両端の位置を指定します。端に矢印などのキャップを付けることもできます。

var line = new Line()
{
    StartPoint = new Graphics.Point(60, 130),
    EndPoint = new Graphics.Point(220, 130),
};

line.Style.LineWidth = 1.5f;
line.Style.EndCap = Graphics.LineCapStyles.Arrow;

worksheet.FloatingObjects.Add(line);

テキストの設定

ShapeObject を継承する図形(矩形・楕円・菱形など)は Text プロパティでテキストを表示できます。

rect.Text = "ラベルテキスト";

スタイル設定

各図形の Style プロパティで見た目をカスタマイズできます。

塗りつぶし色

rect.Style.FillColor = Graphics.SolidColor.LightYellow;

線の色と太さ

rect.Style.LineColor = Graphics.SolidColor.Navy;
rect.Style.LineWidth = 2.0f;

線のスタイル

rect.Style.LineStyle = Graphics.LineStyles.Dash;

LineStyles の値一覧:

説明
Solid実線(デフォルト)
Dash破線
Dot点線
DashDot一点鎖線
DashDotDot二点鎖線

テキストの色・配置

rect.Style.TextColor = Graphics.SolidColor.DarkBlue;
rect.Style.HorizontalAlignment = Drawing.HorizontalAlignment.Center;
rect.Style.VerticalAlignment = Drawing.VerticalAlignment.Middle;

線端のキャップ(Line のみ)

line.Style.StartCap = Graphics.LineCapStyles.Ellipse;
line.Style.EndCap   = Graphics.LineCapStyles.Arrow;

LineCapStyles の値一覧:

説明
Noneキャップなし(デフォルト)
Arrow矢印
Ellipse楕円
Round

回転

RotateAngle プロパティで図形を中心点を基準に回転させます(単位:度)。

rect.RotateAngle = 45f;

セルの値変化と連動させることもできます。

worksheet.CellDataChanged += (s, e) =>
{
    if (e.Cell.Position.ToAddress() == "B5")
    {
        rect.RotateAngle = (float)(e.Cell.GetData<double>() * 360f);
    }
};

スタイル設定の総合例

var rect = new RectangleShape()
{
    Location = new Graphics.Point(120, 90),
    Size = new Graphics.Size(160, 100),
    Text = "スタイルサンプル",
};

rect.Style.FillColor  = Graphics.SolidColor.LightGoldenrodYellow;
rect.Style.LineColor  = Graphics.SolidColor.LimeGreen;
rect.Style.LineWidth  = 3f;
rect.RotateAngle = 15f;

worksheet.FloatingObjects.Add(rect);

図形の管理

// 特定の図形を削除
worksheet.FloatingObjects.Remove(rect);

// すべての図形を削除
worksheet.FloatingObjects.Clear();

// 図形を列挙
foreach (var obj in worksheet.FloatingObjects)
{
    Console.WriteLine(obj.Bounds);
}

// 図形の個数を取得
int count = worksheet.FloatingObjects.Count;

APIリファレンス

すべての図形に共通のプロパティ

プロパティ説明
LocationGraphics.Pointワークシート上の左上位置
SizeGraphics.Size幅と高さ
BoundsGraphics.Rectangle位置とサイズをまとめた矩形
X, YRGFloat座標を個別に指定
Width, HeightRGFloatサイズを個別に指定
RotateAngleRGFloat回転角度(度)。0 が無回転
Visiblebool表示・非表示の切り替え
StyleIDrawingObjectStyle塗りつぶし・線・テキストのスタイルオブジェクト

ShapeObject のプロパティ(矩形・楕円・菱形など)

プロパティ説明
Textstring図形内に表示するテキスト
Style.TextColorSolidColorテキストの色
Style.HorizontalAlignmentHorizontalAlignmentテキストの水平揃え
Style.VerticalAlignmentVerticalAlignmentテキストの垂直揃え

RoundedRectangleShape

プロパティ説明
RoundRateRGFloat角の丸み(0.0 = 直角、1.0 = 最大の丸み)

PieShape

プロパティ説明
StartAngleRGFloat開始角度(度)
SweepAngleRGFloat扇の開き角度(度)

BlockArcShape

プロパティ説明
StartAngleRGFloat開始角度(度)
SweepAngleRGFloat扇の開き角度(度)
ArcWidthRGFloat円弧の太さ

Line

プロパティ説明
StartPointGraphics.Point始点の座標
EndPointGraphics.Point終点の座標
Style.StartCapLineCapStyles始点のキャップスタイル
Style.EndCapLineCapStyles終点のキャップスタイル
Style.LineWidthRGFloat線の太さ
Style.LineColorSolidColor線の色

IDrawingObjectStyle(shape.Style 経由)

プロパティ説明
FillColorIColor塗りつぶし色
LineColorSolidColor輪郭線の色
LineWidthRGFloat輪郭線の太さ
LineStyleLineStyles輪郭線のスタイル(実線・破線・点線など)

ページの内容は役に立ちましたか?