概要
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)
StartPoint と EndPoint で両端の位置を指定します。端に矢印などのキャップを付けることもできます。
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リファレンス
すべての図形に共通のプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Location | Graphics.Point | ワークシート上の左上位置 |
Size | Graphics.Size | 幅と高さ |
Bounds | Graphics.Rectangle | 位置とサイズをまとめた矩形 |
X, Y | RGFloat | 座標を個別に指定 |
Width, Height | RGFloat | サイズを個別に指定 |
RotateAngle | RGFloat | 回転角度(度)。0 が無回転 |
Visible | bool | 表示・非表示の切り替え |
Style | IDrawingObjectStyle | 塗りつぶし・線・テキストのスタイルオブジェクト |
ShapeObject のプロパティ(矩形・楕円・菱形など)
| プロパティ | 型 | 説明 |
|---|---|---|
Text | string | 図形内に表示するテキスト |
Style.TextColor | SolidColor | テキストの色 |
Style.HorizontalAlignment | HorizontalAlignment | テキストの水平揃え |
Style.VerticalAlignment | VerticalAlignment | テキストの垂直揃え |
RoundedRectangleShape
| プロパティ | 型 | 説明 |
|---|---|---|
RoundRate | RGFloat | 角の丸み(0.0 = 直角、1.0 = 最大の丸み) |
PieShape
| プロパティ | 型 | 説明 |
|---|---|---|
StartAngle | RGFloat | 開始角度(度) |
SweepAngle | RGFloat | 扇の開き角度(度) |
BlockArcShape
| プロパティ | 型 | 説明 |
|---|---|---|
StartAngle | RGFloat | 開始角度(度) |
SweepAngle | RGFloat | 扇の開き角度(度) |
ArcWidth | RGFloat | 円弧の太さ |
Line
| プロパティ | 型 | 説明 |
|---|---|---|
StartPoint | Graphics.Point | 始点の座標 |
EndPoint | Graphics.Point | 終点の座標 |
Style.StartCap | LineCapStyles | 始点のキャップスタイル |
Style.EndCap | LineCapStyles | 終点のキャップスタイル |
Style.LineWidth | RGFloat | 線の太さ |
Style.LineColor | SolidColor | 線の色 |
IDrawingObjectStyle(shape.Style 経由)
| プロパティ | 型 | 説明 |
|---|---|---|
FillColor | IColor | 塗りつぶし色 |
LineColor | SolidColor | 輪郭線の色 |
LineWidth | RGFloat | 輪郭線の太さ |
LineStyle | LineStyles | 輪郭線のスタイル(実線・破線・点線など) |