# dotNet.ReoGrid 扩展库 - 浮动对象

在 ReoGrid 工作表中，大多数内容（包括数据和某些对象类型）通常都包含在单元格内。但浮动对象是个例外，它们不与特定单元格关联，可以在工作表的绝对位置上自由定位。

## ReoGrid 中的浮动对象

ReoGrid 中的浮动对象包括多种元素，例如绘图形状、图像和图表等。这些对象都继承自 `FloatingObject` 基类，使它们能够独立于单元格网格存在，并作为离散实体在工作表空间中进行定位和操作。

## 浮动对象的类层次结构

ReoGrid 中浮动对象的类层次结构如下：

* **FloatingObject**：工作表中所有浮动元素的基类
    * **DrawingObject**：可绘制元素的子类，作为特定形状和线条的父类
        * **ShapeObject**：封装形状对象的通用属性和行为
            * **RectangleShape**：矩形形状
            * **EllipseShape**：椭圆形状
            * **RoundedRectangleShape**：圆角矩形
            * **PieShape**：饼图切片形状
            * **DiamondShape**：菱形形状
        * **Line**：直线
        * **ImageObject**：将图像作为浮动对象嵌入工作表
        * **DrawingComponent**：更广泛的类别，包含图表等组件
            * **Chart**：图表对象的基类，提供基本图表功能
                * **LineChart**：折线图
                * **ColumnChart**：柱状图
                * **BarChart**：条形图
                * **AreaChart**：面积图
                * **Pie2DChart**：二维饼图

## 创建浮动对象

以下代码创建一个矩形对象：

```aardio
// 导入 ReoGrid 库
import dotNet.ReoGrid;
var grid = ReoGrid.ReoGridControl(winform);

// 创建矩形对象
var rectObj = ReoGrid.Drawing.Shapes.RectangleShape();
rectObj.Location = grid.Point(50, 50);  // 设置矩形位置
rectObj.Size = grid.Size(200, 100);    // 设置矩形大小
```

> **说明**：在 aardio 中创建 .NET 对象时不需要使用 `new` 关键字，直接调用类名即可。

## 添加浮动对象

要将浮动对象添加到工作表，只需将对象放入工作表的 `FloatingObjects` 集合中：

```aardio
// 获取当前选中的工作表
var sheet1 = grid.CurrentWorksheet;

// 将矩形添加到工作表
sheet1.FloatingObjects.Add(rectObj);
```

添加后的效果：  
![262](./images/262.png)

## 浮动图像

![261](./images/261.png)

要在工作表中添加图像，请参阅[浮动图像](./floating/floating-image.html)部分。

```aardio
// 导入 System.Drawing 库
import System.Drawing;

// 从文件创建图像对象
var img = System.Drawing.Image.FromFile("~\images\sample.png");

// 创建图像浮动对象
var imgObj = ReoGrid.Drawing.ImageObject(img);
imgObj.Location = grid.Point(100, 100);  // 设置图像位置

// 添加到工作表
sheet1.FloatingObjects.Add(imgObj);
```

> **提示**：在 aardio 中，`~` 表示 EXE 所在目录，`\` 开头的路径表示应用程序根目录。