在PowerPoint形状中设置溢出

4
所以,我正在程序生成一个形状,当它有少量文本时,它看起来像这样: 样式正确,垂直对齐到顶部 然而,如果我添加大量文本,它会溢出形状,如下所示: 垂直对齐从边界外开始 我想要做的是隐藏溢出并强制文本从形状顶部开始(当前文本从高于形状顶部的位置开始)
到目前为止,我还没有找到太多关于此的信息,以下是我用于形状内部文本的代码:
var shape = slide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, left, top, width, height);
var textRange2 = shape.TextFrame.TextRange.InsertAfter(description);
            textRange2.Font.Size = 10;

shape.TextFrame.TextRange.Paragraphs().ParagraphFormat.Alignment = PpParagraphAlignment.ppAlignLeft;
shape.TextFrame.TextRange.Paragraphs().Font.Name = "Consolas";
shape.TextFrame.TextRange.Paragraphs().Font.Color.RGB = foregroundColor;

最后一件事,我知道我可以限制字符串长度,但这会给用户带来问题。我希望他能够手动调整形状大小,如果有太多的文本,那么就不行了。基本上,我只想要相当于CSS overflow:hidden规则。

对于某些用户来说,一个选择是使用以下方法:

shape.TextFrame.AutoSize = PpAutoSize.ppAutoSizeShapeToFitText;

这将调整形状以适应文本,还应该有一个选项来调整字体大小以适应形状(即调整字体大小),但是我似乎找不到该功能。

谢谢大家


在这里,您可以如何使用枚举PpAutoSize - Darius Miliauskas
2个回答

3
所以,显然
shape.TextFrame.AutoSize 

接受一个可枚举的 PpAutoSize,其中包含 PpAutoSize.ppAutoSizeShapeToFitText;可以使用该选项。

shape.TextFrame2.AutoSize

接受一个可枚举的MsoAutoSize,其中包含MsoAutoSize.msoAutoSizeTextToFitShape;

因此,如果您将使用的文本框更改为TextFrame2而不是TextFrame,则可以自动调整文本大小以适应形状。

shape.TextFrame2.AutoSize = MsoAutoSize.msoAutoSizeTextToFitShape;

好的,那很有趣。Textframe2的存在是什么原因呢?;) 感谢您的澄清。然而,这个解决方案对我的问题不起作用,因为客户不想改变字体大小(营销...)。 - Christian Sauer
说实话,我不知道为什么存在TextFrame2,它似乎与普通的TextFrame非常相似,但具有一些不同的属性;在您的情况下,您需要的是等价于overflow: hidden,对吧?但我找不到该选项(我已经搜索了大约两天)。 - Halaster
1
这是一个文本框架,这不是很明显吗?:D - Christian

0
在PowerPoint中,有一个直接完成此操作的选项。根据菜单中的位置,我猜测它可能在shape.TextFrame.AutoSize属性中——也许是“混合”选项?PowerPoint对象模型非常混乱,所以它可能是其他奇怪的属性...

嘿,克里斯蒂安,其实我已经尝试过了,但是没有任何效果-它似乎并没有真正做任何事情(我觉得这只是默认设置..?),但你说得对,对象模型一团糟,肯定存在文字大小调整功能,因为你可以在Powerpoint中手动进行调整(正如你所指出的),只是非常难以找到。 - Halaster
你说得对,这可能是自动化无法完成的事情,我会找到一种手动完成的方法,并继续探索潜在的选项。感谢你的帮助,Christian。 - Halaster
1
作为一个想法:可以在Powerpoint中计算文本的大致大小——如果这样做,你可以猜测形状是否太小并减小所需的字体大小。我已经为一个应用程序完成了这个过程,但很抱歉我不能给你代码:( 这可能会让你开始:https://dev59.com/73VC5IYBdhLWcg3wihmv我的解决方案基于formattedtext: http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.aspx - Christian Sauer
嘿,谢谢你!那可能会很有帮助!我会及时通知你,并在非工作时间尝试它 :) - Halaster
谢谢 - 那将非常有趣!作为提示:在计算形状的大小时不要忽略边距 - 它们会大大减少可用空间。 - Christian Sauer
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接