Цвет в ArcObjects вопрос начинающего

0 голосов
спросил 21 Апр, 09 от nav3000 (420 баллов) в категории Программные продукты Esri
Добрый день

Начал работать с ArcObjects в .NET
Обратил внимание что значение цвета RGB не соответствует "нормальному" RGB значению. Так например из FillSymbol.Color.RGB который имеетцвет заливки желтый получаю 41156607. Однако в RGB желтый цвет 255 255 0. Не буду приводить пример далее, но со CMYK такая же история. Подскажите пожалуйста как эту кодировку перевести в "нормальный" RGB и назад.
Зараннее благодарен
С уважением ко всем участникам форума
nav3000

2 Ответы

0 голосов
ответил 22 Апр, 09 от TDenis (42,620 баллов)
FillSymbol.Color - использует интерфейс IColor. Гляньте справку по IColor.
Один из классов, который реализует данный интерфейс - RgbColor. Если посмотрите этот класс, то найдёте у него интерфейс IRgbColor.
У этого интерфейса есть отдельные свойства для каждого цвета. И есть свойство RGB, которое возвращает (и задаёт) единое целочисленное значение цвета.
Также есть аналогичные интерфейсы для CMYK и прочих цветовых схем.
Короче говоря, ЕМНИП, можно сделать что-то вроде:

IRgbColor rgbColor = new RgbColorClass();
rgbColor.Red = 128;
rgbColor.Green = 128;
rgbColor.Blue = 128;
fillSymbol.Color = rgbColor;

Удачи!
0 голосов
ответил 23 Апр, 09 от nav3000 (420 баллов)
Спасибо за помощь. Я поступил так как Вы посоветовали. И тепепь могу вашу мысль продолжить. Дело в том что не все классы имплементирующие IColor имплементируют IRgbColor, некоторые например имплементируют ICmykColor. Однако свойство RGB возвращающее значние RGB как integer принадлежит интерейсу IColor. Собственно в начале вопрос был именно связан с этим свойством, а испльзуя его (как окзалось) с помощью класса System.Drawing.ColorTranslator, имеющего метод FromWin32 можно получить желаемый "нормальный" RGB

Еще раз спасибо за помощь пи погружении в мир ArcObjects
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...