Изменение на рисунке одного цвета другим

Автор Палыч, 23 января 2024, 17:14

0 Пользователи и 1 гость просматривают эту тему.

Палыч

В LibreOffice Draw замену одного цвета другим "руками" можно сделать через диалог Color Replaser (Замена цвета). Можно ли подобное выполнить из макроса?

Kadet

#1
Можно.
Два макроса.
Первый ищет Draw-элемент в документе по его имени.  Для этого Draw-объект должен иметь свой Name.
Или можно искать по индексу, но тогда нужно точно знать индекс Draw-объекта.
Второй меняет его характеристики. (Надеюсь поймёте, что color, Fillcolor и FillTrans это переменные типа Long).
sub Main
'*******************************
oDoc = ThisComponent
oDrawPage = oDoc.DrawPages(0)
oElem = SearchElement(oDrawPage, "Название элемента")
'*******************************
oElem.LineColor = color ' Цвет линии (обрамления)
oElem.FillColor = Fillcolor ' Цвет заливки
oElem.FillTransparence = FillTrans ' Процент прозрачности - 0 - не_пррозрачно, 100 - прозрачно
'*******************************
end sub



Function SearchElement(oDrawPage, oName) as object
Dim oElem, oElem1, eName$, i%, j%, n%, m%, k%, s$
'*****************************************
For i=(oDrawPage.Count-1) To 0 Step -1
oElem = oDrawPage.getByIndex(i)
eName = oElem.Name
If InStr(eName, oName(n))<>0 Then
SearchElement = oElem
Exit For
End If
Next
'*****************************************
End Function