none
Excel c# - цвет фигуры RRS feed

  • Вопрос

  • Устанавливаю цвет контура фигуры:

    myshape.Line.ForeColor.RGB = Color.FromArgb(1, 2, 3).ToArgb();

    В сигнатуре метода FromArgb() указана последовательность аргументов - red, green, blue

    Задаю значения для тестирования:

    red - 1

    green - 2

    blue - 3

    Код выполняется, но цвет контура фигуры неправильный. Открываю в Excel цвет контура и вижу вот это:

    Почему перепутаны красный и синий цвета?


    11 сентября 2019 г. 18:40

Все ответы

  • Видимо потому что формат цвета в ARGB в System.Drawing и RGB в Экселе не совпадает. Их там много разных вариантов упаковки вроде RGBA, BGRA, ABGR, RGB, BGR и так далее. Вы решили что порядок упаковки байтов одинаков, но это очевидно не так.

    Напишите свою функцию которая будет делать правильное преобразование или вообще не используйте System.Drawing. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    • Предложено в качестве ответа Alexandr_Smirnoff 12 сентября 2019 г. 23:11
    12 сентября 2019 г. 8:57
    Модератор
  • В VBA предполагается, что значение этого свойства формируется с помощью функции RGB. В .NET ее аналог, видимо, метод Microsoft.VisualBasic.Information.RGB
    • Предложено в качестве ответа Alexandr_Smirnoff 12 сентября 2019 г. 23:11
    12 сентября 2019 г. 10:33