Свойство Series.Format.Fill.Transparency не применяет форматирование - PullRequest
1 голос
/ 05 июля 2019

У меня есть диаграмма, в которой я создаю ряд новых серий для использования метода Chart.SeriesCollection.NewSeries, после того как я сразу форматирую каждую серию. Кажется, что все форматирование работает (размер маркера / стиль / цвет), прозрачность маркера полосы, которую я установил через свойство Series.Format.Fill.Transparency.

Я видел людей, использующих метод выбора для установки прозрачности маркера серии, как показано ниже:

 Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
With GraphSeries.Absolute.ErraticErrors
    .Name = "ErraticSeries"
    .MarkerSize = CommonMarkerSize
    .MarkerBackgroundColorIndex = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
    .MarkerForegroundColor = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
    .Select
        Selection.Format.Fill.Transparency = CommonMarkerTrans
    .Format.Line.Visible = msoFalse
End With

После попытки и устранения неполадок вышеупомянутого метода кажется, что, когда установлена ​​прозрачность маркера, можно видеть, что цвет фона маркера изменяет значение, а не прозрачность, которая остается в своем первоначальном значении, странно? Основываясь на этом выводе, я вернулся к Series.Format.Fill.Transparency = CommonMarkerTrans и просмотрел это свойство в окне просмотра, установив его на CommonMarkerTrans, и не заметил изменений в исходном значении of Series.Format.Fill.Transparency (-2.147484E + 09), также странно?

Похоже, что свойство Series.Format.Fill.Transparency не меняется со своего начального значения при попытке установить его в CommonMarkerTrans через Series.Format.Fill.Transparency = CommonMarkerTrans

Примечание: CommonMarkerTrans = 0,9 как одиночное

У кого-нибудь есть идеи, почему это так? Я действительно озадачен здесь, это может быть связано с порядком, в котором я устанавливаю форматирование маркера?

Ниже приведен фрагмент кода для предоставления контекста. Код создает «пустой» ряд диаграммы, а затем применяет различное форматирование, например размер маркера, а затем устанавливает значения серий X и Y из данных, хранящихся в двух отдельных массивах.

Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
With GraphSeries.Absolute.ErraticErrors
    .Name = "ErraticSeries"
    .MarkerSize = CommonMarkerSize
    .Format.Fill.Transparency = CommonMarkerTrans
    .MarkerBackgroundColorIndex = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
    .MarkerForegroundColor = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
    .Format.Line.Visible = msoFalse
End With

RelOrAbsChart.SeriesCollection(SeriesName.ErraticSeries).XValues = XAxisRelOrAbs.ErraticSeries
RelOrAbsChart.SeriesCollection(SeriesName.ErraticSeries).Values = YAxisRelOrAbs.ErraticSeries

1 Ответ

0 голосов
/ 06 июля 2019

Кажется, я решил это.По какой-то причине вы должны использовать следующие свойства для установки / цвета фона маркеров серии, если вы хотите использовать Fromat.Fill. Transparency для установки маркера Прозрачность

 Series.Format.Fill.ForeColor.RGB = RGB(R,G,B)
 Series.Format.Fill.BackColor.RGB = RGB(R,G,B)

А не

Series.MarkerBackgroundColor = RGB(R,G,B)
Series.MarkerForegroundColor = RGB(R,G,B)

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

Зачем вам нужны два отдельных и взаимоисключающих свойства для одной и той же вещи?Для ясности, может быть, кто-то может прояснить это или исправить мое понимание?

Функциональный код, который теперь правильно устанавливает цвет и прозрачность:

    Set GraphSeries.Absolute.ErraticErrors = AbsChart.SeriesCollection.NewSeries
    With GraphSeries.Absolute.ErraticErrors
        .Name = "ErraticSeries"
        .MarkerSize = CommonMarkerSize
        .MarkerStyle = xlMarkerStyleCircle
        With .Format.Fill
            .Visible = msoTrue
            .ForeColor.RGB = Graph.XY.Formatting.MarkerFillColour.ErraticErrors
            .BackColor.RGB = Graph.XY.Formatting.MarkerLineColur.ErraticErrors
            .Transparency = CommonMarkerTrans
            .Visible = msoTrue
        End With
    End with
...