浮动对象独立于单元格网格存在,可以自由定位在工作表上的绝对位置。它们包括绘图形状、图片和图表。
命名空间
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;
// 创建形状
var rect = new RectangleShape
{
Location = new Graphics.Point(50, 50),
Size = new Graphics.Size(200, 100),
Text = "Hello ReoGrid",
};
// 添加到工作表
sheet.FloatingObjects.Add(rect);
结果:

FloatingObjects 集合
| 方法 | 说明 |
|---|---|
Add(object) | 向工作表添加浮动对象 |
AddRange(objects) | 一次添加多个浮动对象 |
Remove(object) | 移除特定浮动对象 |
Clear() | 移除所有浮动对象 |
Contains(object) | 检查对象是否在集合中 |
Count | 浮动对象数量(只读) |
this[int index] | 按索引访问 |
// 移除特定形状
sheet.FloatingObjects.Remove(rect);
// 移除所有浮动对象
sheet.FloatingObjects.Clear();
// 遍历所有浮动对象
foreach (var obj in sheet.FloatingObjects)
{
Console.WriteLine($"{obj.GetType().Name}: {obj.Bounds}");
}
// 计数浮动对象
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 | 下边缘(只读) |
// 位置
rect.Location = new Graphics.Point(100, 200);
// 大小
rect.Size = new Graphics.Size(300, 150);
// 同时设置
rect.Bounds = new Graphics.Rectangle(100, 200, 300, 150);
// 单独属性
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 | 添加:子对象集合、裁剪边界 |