CorelDRAW VBA Цвет штриховки

#vba #colors #fill #coreldraw

#vba #Цвет #заливка #coreldraw

Вопрос:

У кого-нибудь есть идея, как получить цвет фона и линий из пользовательской заливки штриховки?

следующий код заполняет выбранную фигуру, используя данные из текстовых полей

       ActiveSelectionRange.ApplyCustomHatchFill ANG.value, LS.value, 0, 0, 0, LT.value, CreateRGBColor(255, 0, 0), BackColor:=CreateRGBColor(255, 255, 255)
  

это работает нормально, у меня также есть средство выбора цвета, которое изменяет цвет линии и фона, и это нормально, но если вы измените размер линии, цвет вернется к тому, который указан в приведенном выше коде

что мне нужно получить, так это текущий цвет линии и backcolor в выбранной фигуре, чтобы я мог изменить толщину линии, сохранив установленный цвет

у меня такое чувство, что это как-то связано с GET patternfill.backcolor, но я не могу найти никаких примеров его использования

Любая помощь приветствуется

отметить

Обновить

Хорошо, я обнаружил, что следующее возвращает обратный цвет в строку

значение = s.Заливка.Штриховка.Обратный цвет.toString

Затем я могу выполнить разделение и получить значения

Но, похоже, нет возможности получить цвет линии (Forecolor)

Есть идеи?

Ответ №1:

Штриховка заливкой

Штриховка фигуры — это объект штриховки. У него есть один BackColor и один или несколько Patterns() .
Каждый шаблон имеет Outline (указывающий строку в шаблоне), который имеет Color который может быть прочитан, например, ToString или другими методами для считывания цвета.

Если вы хотите изменить другие свойства ваших линий штриховки, пожалуйста, ознакомьтесь со всеми свойствами и методами Outline здесь

Несколько примеров:

 s.Fill.Hatch.BackColor                  ' background color
s.Fill.Hatch.Patterns(1).Outline.Color  ' line color of first pattern
s.Fill.Hatch.Patterns(1).Outline.Width  ' line width of first pattern
  

Вы также можете проверить, действительно ли у него непрозрачный фон: Fill.Hatch.HasBackground

Заливка шаблоном

На всякий случай: заливка шаблоном проще и имеет только два цвета:

 s.Fill.Pattern.FrontColor
s.Fill.Pattern.BackColor
  

Комментарии:

1. Привет, Asger Hatch.patterns работает, но выдает мне шаблоны фонового цвета. цвет передней панели выдает ошибку с сообщением о неправильном типе заливки, мне нужен цвет передней панели hatchfill, не могу поверить, что это ооочень сложно

2. Сколько Fill.Hatch.Patterns.Count у вашей фигуры? Пожалуйста, проверьте, какие Outline.Color цвета есть у всех этих элементов. Пожалуйста, также проверьте Patterns(0) .

3. Привет, Асгар, количество равно 1, если я проверяю шаблоны (0), выдается ошибка, указывающая, что должно быть от 1 до 1

4. У вас «есть средство выбора цвета, которое изменяет цвет линии», но как или что это меняет? Возможно, проблема в этом. Если вы не измените Hatch.Patterns(1).Outline.Color с помощью этого средства выбора цвета, он останется предопределенным.

5. Вы также изменяете «размер линии». Если вы имели в виду ширину линии, я также добавил пример.