浮动对象独立于单元格网格存在,可以自由定位在工作表上的绝对位置。它们包括绘图形状、图片和图表。

命名空间

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);

结果: 262

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;

通用属性(所有浮动对象)

所有浮动对象共享以下定位和大小属性:

属性类型说明
LocationGraphics.Point工作表上的左上角位置
SizeGraphics.Size宽度和高度
BoundsGraphics.Rectangle位置和大小的组合
XRGFloatX 坐标
YRGFloatY 坐标
WidthRGFloat宽度
HeightRGFloat高度
LeftRGFloat左边缘(只读)
RightRGFloat右边缘(只读)
TopRGFloat上边缘(只读)
BottomRGFloat下边缘(只读)
// 位置
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 属性

绘图对象添加了视觉样式和变换属性:

属性类型说明
Visiblebool对象是否可见
RotateAngleRGFloat旋转角度(度)
ScaleXRGFloat水平缩放因子
ScaleYRGFloat垂直缩放因子
StyleIDrawingObjectStyle填充、线条和文本的样式
ClientBoundsRectangle对象内的边界(只读)
rect.RotateAngle = 45f;
rect.Visible = false;

样式

通过 Style 属性自定义外观:

IDrawingObjectStyle 属性

属性类型说明
FillColorIColor背景填充颜色
LineColorSolidColor轮廓颜色
LineWidthRGFloat轮廓宽度
LineStyleLineStyles轮廓样式
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 支持文本:

属性类型说明
TextColorSolidColor文本颜色
HorizontalAlignmentHorizontalAlignment文本水平对齐方式
VerticalAlignmentVerticalAlignment文本垂直对齐方式
rect.Text = "Styled Shape";
rect.Style.TextColor = Graphics.SolidColor.DarkBlue;
rect.Style.HorizontalAlignment = Drawing.HorizontalAlignment.Center;
rect.Style.VerticalAlignment = Drawing.VerticalAlignment.Middle;

线条端点样式

线条对象通过 IDrawingLineObjectStyle 支持端点样式:

属性类型说明
StartCapLineCapStyles起始点的端点样式
EndCapLineCapStyles结束点的端点样式

LineCapStyles 枚举

说明
None无端点(默认)
Arrow箭头
Ellipse椭圆端点
Round圆形端点

事件

FloatingObject 事件

事件说明
MouseDown在对象上按下鼠标按钮

选择事件

事件说明
SelectionChanged对象选择状态发生变化
rect.SelectionChanged += (s, e) =>
{
    Console.WriteLine($"Selected: {rect.IsSelected}");
};

对象类型

绘图形状

具有填充、轮廓和文本支持的形状。有关所有形状类型及其属性,请参阅绘图形状

浮动图片

在工作表上显示图片。请参阅浮动图片

261

var image = Image.FromFile("photo.png");
var imgObj = new ImageObject(image)
{
    Location = new Graphics.Point(40, 30),
};
sheet.FloatingObjects.Add(imgObj);

图表

图表也是浮动对象。有关所有图表类型,请参阅图表

接口层次结构

接口继承说明
IFloatingObject基础:位置、大小、边界
IDrawingObjectIFloatingObject添加:样式、旋转、缩放、容器
IDrawingContainerIDrawingObject添加:子对象集合、裁剪边界

相关主题

这篇文章对您有帮助吗?