Shap.FitToTextSize默认是水平方向拉宽文本框,如何锁定宽度,只在垂直方向拉高文本框?

Shap.FitToTextSize默认是水平方向拉宽文本框,如何锁定宽度,只在垂直方向拉高文本框?

@lingtian

概要
Shape.FitToTextSize() 会根据文本内容自动调整形状的尺寸。官方文档没有提供单独控制宽度或高度的参数,只能让宽度和高度同时适配文本。

原因
该方法内部会计算文本所占的矩形区域,然后把形状的 WidthHeight 都设为能够完整显示文本的最小值。当前 API 没有重载或属性可以仅在垂直方向扩展而保持宽度不变。

后续操作

  • 自行保存并恢复宽度:在调用 FitToTextSize() 之前记录形状的宽度,调用后再把宽度设回原值,从而只保留高度的自动调整效果。
  • 手动计算高度:关闭自动适配(如将 TextFrameFormat.AutofitType 设为 NormalNotDefined),根据字体大小、行距等自行计算所需的高度,只设置 shape.Height,保持宽度不变。
  • 参考官方文档或示例:不同版本的 Aspose.Slides 可能在属性名称或行为上有细微差别,建议查阅对应版本的 API 文档,确认是否已有新增方式实现仅垂直方向的自适应。

@lingtian,

您能否提供一个包含所需文本框的示例Excel文件?要求文本框宽度固定,但高度可调整。请将文件压缩后发送给我们。收到后,我们会审核您的需求,并提供进一步的详细信息以及示例代码片段。

@lingtian
您可以使用如下代码达到预期效果:

int[] wh = Shape.CalculateTextSize();
Shape.Width = wh[0];
Shape.Height = wh[1];

// wrap text 
Shape.TextBody.TextAlignment.IsTextWrapped = true;