フローティングオブジェクトはセルグリッドから独立して存在し、ワークシート上の絶対位置に自由に配置できます。描画シェイプ、画像、チャートが含まれます。
名前空間
using unvell.ReoGrid.Drawing;
using unvell.ReoGrid.Drawing.Shapes;
クラス階層
FloatingObject
└─ DrawingObject
├─ ShapeObject
│ ├─ RectangleShape
│ ├─ EllipseShape
│ ├─ RoundedRectangleShape
│ ├─ DiamondShape
│ ├─ PieShape
│ └─ BlockArcShape
├─ Line
├─ ImageObject
└─ DrawingComponent
└─ Chart (ColumnChart, BarChart, LineChart, etc.)
フローティングオブジェクトの追加
すべてのフローティングオブジェクトは、ワークシートのFloatingObjectsコレクションを通じて管理されます。
var sheet = grid.CurrentWorksheet;
// Create a shape
var rect = new RectangleShape
{
Location = new Graphics.Point(50, 50),
Size = new Graphics.Size(200, 100),
Text = "Hello ReoGrid",
};
// Add to worksheet
sheet.FloatingObjects.Add(rect);
結果:

FloatingObjectsコレクション
| メソッド | 説明 |
|---|---|
Add(object) | フローティングオブジェクトをワークシートに追加します |
AddRange(objects) | 複数のフローティングオブジェクトを一度に追加します |
Remove(object) | 特定のフローティングオブジェクトを削除します |
Clear() | すべてのフローティングオブジェクトを削除します |
Contains(object) | オブジェクトがコレクションに含まれているか確認します |
Count | フローティングオブジェクトの数(読み取り専用) |
this[int index] | インデックスでアクセスします |
// Remove a specific shape
sheet.FloatingObjects.Remove(rect);
// Remove all floating objects
sheet.FloatingObjects.Clear();
// Iterate all floating objects
foreach (var obj in sheet.FloatingObjects)
{
Console.WriteLine($"{obj.GetType().Name}: {obj.Bounds}");
}
// Count floating objects
int count = sheet.FloatingObjects.Count;
共通プロパティ(すべてのフローティングオブジェクト)
すべてのフローティングオブジェクトは以下の位置とサイズのプロパティを共有しています。
| プロパティ | 型 | 説明 |
|---|---|---|
Location | Graphics.Point | ワークシート上の左上の位置 |
Size | Graphics.Size | 幅と高さ |
Bounds | Graphics.Rectangle | 位置とサイズの組み合わせ |
X | RGFloat | X座標 |
Y | RGFloat | Y座標 |
Width | RGFloat | 幅 |
Height | RGFloat | 高さ |
Left | RGFloat | 左端(読み取り専用) |
Right | RGFloat | 右端(読み取り専用) |
Top | RGFloat | 上端(読み取り専用) |
Bottom | RGFloat | 下端(読み取り専用) |
// Position
rect.Location = new Graphics.Point(100, 200);
// Size
rect.Size = new Graphics.Size(300, 150);
// Both at once
rect.Bounds = new Graphics.Rectangle(100, 200, 300, 150);
// Individual properties
rect.X = 100;
rect.Width = 300;
DrawingObjectプロパティ
描画オブジェクトには視覚的なスタイリングと変換のプロパティが追加されます。
| プロパティ | 型 | 説明 |
|---|---|---|
Visible | bool | オブジェクトが表示されるかどうか |
RotateAngle | RGFloat | 回転角度(度) |
ScaleX | RGFloat | 水平スケール係数 |
ScaleY | RGFloat | 垂直スケール係数 |
Style | IDrawingObjectStyle | 塗りつぶし、線、テキストのスタイル |
ClientBounds | Rectangle | オブジェクト内の境界(読み取り専用) |
rect.RotateAngle = 45f;
rect.Visible = false;
スタイリング
Styleプロパティにアクセスして外観をカスタマイズします。
IDrawingObjectStyleプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
FillColor | IColor | 背景の塗りつぶし色 |
LineColor | SolidColor | 輪郭の色 |
LineWidth | RGFloat | 輪郭の幅 |
LineStyle | LineStyles | 輪郭のスタイル |
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 | 二点鎖線 |
シェイプのテキストスタイリング
シェイプ(Rectangle、Ellipse、Diamondなど)はIDrawingShapeObjectStyleを介してテキストをサポートしています。
| プロパティ | 型 | 説明 |
|---|---|---|
TextColor | SolidColor | テキストの色 |
HorizontalAlignment | HorizontalAlignment | テキストの水平配置 |
VerticalAlignment | VerticalAlignment | テキストの垂直配置 |
rect.Text = "Styled Shape";
rect.Style.TextColor = Graphics.SolidColor.DarkBlue;
rect.Style.HorizontalAlignment = Drawing.HorizontalAlignment.Center;
rect.Style.VerticalAlignment = Drawing.VerticalAlignment.Middle;
線のキャップスタイリング
線オブジェクトはIDrawingLineObjectStyleを介してキャップスタイルをサポートしています。
| プロパティ | 型 | 説明 |
|---|---|---|
StartCap | LineCapStyles | 始点のキャップ |
EndCap | LineCapStyles | 終点のキャップ |
LineCapStyles列挙型
| 値 | 説明 |
|---|---|
None | キャップなし(デフォルト) |
Arrow | 矢印 |
Ellipse | 楕円キャップ |
Round | 丸キャップ |
イベント
FloatingObjectイベント
| イベント | 説明 |
|---|---|
MouseDown | オブジェクト上でマウスボタンが押されたとき |
選択イベント
| イベント | 説明 |
|---|---|
SelectionChanged | オブジェクトの選択状態が変更されたとき |
rect.SelectionChanged += (s, e) =>
{
Console.WriteLine($"Selected: {rect.IsSelected}");
};
オブジェクトタイプ
描画シェイプ
塗りつぶし、輪郭、テキストをサポートするシェイプです。すべてのシェイプタイプとそのプロパティについては、描画シェイプを参照してください。
フローティング画像
ワークシート上に画像を表示します。フローティング画像を参照してください。

var image = Image.FromFile("photo.png");
var imgObj = new ImageObject(image)
{
Location = new Graphics.Point(40, 30),
};
sheet.FloatingObjects.Add(imgObj);
チャート
チャートもフローティングオブジェクトです。すべてのチャートタイプについては、チャートを参照してください。
インターフェース階層
| インターフェース | 継承元 | 説明 |
|---|---|---|
IFloatingObject | — | 基本: 位置、サイズ、境界 |
IDrawingObject | IFloatingObject | 追加: スタイル、回転、スケール、コンテナ |
IDrawingContainer | IDrawingObject | 追加: 子コレクション、クリップ境界 |