PowerPoint: как сохранить скругление углов при изменении размера скругленных прямоугольников, как в Adobe Illustrator?

Я использую PowerPoint для создания макетов пользовательских интерфейсов.

Это легко, если вы используете регулярные прямоугольники с острыми углами.

Это трудно, когда вы используете скругленные прямоугольники.

есть ли способ сохранить закругление угла закругленного прямоугольника при изменении его размера? В настоящее время, если вы изменяете размер скругленного прямоугольника, скругленные углы становятся больше / меньше соответственно. Это не то, чего я хочу... Я хочу изменить размер только ширины и высоты прямоугольник, без изменения радиуса закругленной границы. Как в CSS. Или как в Illustrator. Но в PowerPoint.

26
задан harrymc
28.03.2023 15:29 Количество просмотров материала 2625
Распечатать страницу

2 ответа

для решения задачи требуются макросы VBA.

Если вам никогда раньше не приходилось работать с VBA (вам повезло), вы можете изучить эту тему в статье Microsoft : начало работы с VBA в PowerPoint 2010.

вам понадобятся следующие два макроса: GetShapeRounding и SetShapeRounding. Оба макроса предполагают, что скругленный прямоугольник является выбранным в данный момент формировать. Первый макрос вычисляет размер радиуса фигуры в точках и второй устанавливает выбранную форму на этот радиус.

использование макросов:

  1. создайте закругленный прямоугольник и выберите его (или оставить его выбрали)
  2. запустить первый макрос для вычисления радиуса
  3. измените размер закругленного прямоугольника и оставьте его выбранным
  4. запустите второй макрос, чтобы установить его углы на расчетный радиус

вот макросы :

Dim sngRadius As Single ' Radius size in points

Sub GetShapeRounding()
Dim oSh As Shape
Set oSh = ActiveWindow.Selection.ShapeRange(1)
With oSh
  If .Width < .Height Then
    sngRadius = .Width * .Adjustments(1)
  Else ' .Width >= .Height
    sngRadius = .Height * .Adjustments(1)
  End If
End With
MsgBox sngRadius
Set oSh = Nothing
End Sub

Sub SetShapeRounding()
Dim oSh As Shape
Set oSh = ActiveWindow.Selection.ShapeRange(1)
With oSh
  If .Width < .Height Then
    .Adjustments(1) = sngRadius / .Width
  Else ' .Width >= .Height
    .Adjustments(1) = sngRadius / .Height
  End If
End With
Set oSh = Nothing
End Sub

проверено на PowerPoint 2010.

7
отвечен harrymc 2023-03-29 23:17

Я не думаю, что это возможно с PowerPoint из коробки.

для него нужно написать небольшой макрос VBA.

есть PowerPoint надстройки, которые позволяют унифицировать радиус угла (дать каждый ящик тот же радиус). Наш один из них: www.veodin.com/slideproof

1
отвечен Cilvic 2023-03-30 01:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх