Имя: Пароль:
1C
 
Определение цвета
0 mishaPH
 
31.10.10
12:33
Коллеги, сломал себе мозг. Каким образом определяется код цвета когда задаем цвет строки.

например
.Цвет(R,G,B) с этим понятно.
а вот когда цвет определяется 1 кодом, как я понял это по какой-то формуле смешение (R,G,B).

как из (R,G,B) вычислить этот код
1 Aleksey_3
 
31.10.10
12:38
это где?
2 Aleksey_3
 
31.10.10
12:39
Типа R 255, G 204, B 0 -> ffcc00
3 mishaPH
 
31.10.10
12:40
Вариант 1

Цвет(<?>,,)
Синтаксис:
Цвет(<R>,<G>,<B>)
Назначение:
Установка режима отображения цвета элемента диалога. Возвращает: текущее числовое значение RGB цвета элемента диалога (на момент до исполнения метода).
Параметры:
<R> - число, задающее цвет красной компоненты;
<G> - число, задающее цвет зеленой компоненты;
<B> - число, задающее цвет синей компоненты.
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.

Вариант 2

Цвет(<?>)
Синтаксис:
Цвет(<Цвет>)
Назначение:
Установка режима отображения цвета элемента диалога. Возвращает: текущее числовое значение RGB цвета элемента диалога (на момент до исполнения метода).
Параметры:
<Цвет> - число, задающее цвет (-1 определяет цвет, заданный для формы).
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.
4 mishaPH
 
31.10.10
12:40
(2) 16 ти ричный это понятно. там число десятичное
5 miki
 
31.10.10
12:42
(4)Преобразровать в hex-строку, а потОм Лев(,2),Прав(,2),Сред()...
6 skunk
 
31.10.10
12:44
7 mishaPH
 
31.10.10
12:44
(5) ? например оранжевый ff9900 код.
8 mishaPH
 
31.10.10
12:47
(6) мерси! нашел там формулу
9 Aleksey_3
 
31.10.10
12:47
FFFFFF = 16777215 оно?
10 Aleksey_3
 
31.10.10
12:48
(7) 16750848
11 mishaPH
 
31.10.10
12:50
нифига оранжевый ff9900 = 255,153,0 = 39423
12 mishaPH
 
31.10.10
12:50
в(6) раскраска раздел
13 miki
 
31.10.10
12:50
(11)не прав
14 mishaPH
 
31.10.10
12:53
(13) да ты что. а у меня все получилось и цвет 1с вывела правильный
15 mishaPH
 
31.10.10
12:54
внимательно читаем (6) там есть формула. там не просто перевод из 16тиричного в двоичный.
16 mishaPH
 
31.10.10
12:55
для 1с палитры
RGB = (Blue*65535) + (Green*256) + (Red)
17 miki
 
31.10.10
12:56
(14)
И формулы не понимаешь, и дальтоник, по-ходу...
0xff9900 = 16750848, прав (10)
18 mishaPH
 
31.10.10
12:56
(17) инженерным калькулятором я могу пользоватся. тоже. 10 не прав.
19 mishaPH
 
31.10.10
12:57
(17) открой 7ку, и выведи параметр цвет(16750848) и удивись что за цвет получился.
20 miki
 
31.10.10
12:58
(16) извините, в фотошопе проверял...
21 mishaPH
 
31.10.10
12:58
еще раз внимательно читаем (6) и ищем там формулу (16)
22 mishaPH
 
31.10.10
12:59
(20) причем тут фотошоп?
23 miki
 
31.10.10
12:59
(19)не подозревал, что БН и цвет ни как у людей сделает...
сорри ещё раз.
24 mishaPH
 
31.10.10
13:00
(23) ага. вот я тоже и голову сломал. первоначально тоже думал как ты.
25 Cthulhu
 
31.10.10
13:03
1с7 отображает не все цвета а только те, которые составляют палитру (набор цветов в "свойствах" элементов, допускающих раскраску - он одинаков). С остальными цветами 1с7 обходится варварски - преобразует к ближайшему цвету из палитры.
поэтому для определения цветов и раскрасок разумнее всего один раз нарисовать обработку, которая предоставляет в диалоге выбор из набора элементов (атрибутов диалога и/или ячеек), раскрашенных всеми доступными из палитры цветами и результат выбора предоставляет в виде фрагмента кода, доступного для копипасты (в нотации с одноночисловым представлением).
такую обработку можно доработать до вида, который при принятии в параметрах (при открытии) произвольного R+G+B или номерного представления цвета - не открывая диалога возвращает в параметре числовое представление ближайшего цвета 1с-овской палитры.
делается один раз и закрывает этот вопрос навсегда.
26 miki
 
31.10.10
13:05
+
Извиняюсь и перед БН. Действительно, в хексе ничинается с синего.

COLORREF — стандартный тип для представления цветов в Win32. Использует для определения цвета в RGB виде. Размер — 4 байта. При определении какого-либо RGB цвета, значение переменной типа COLORREF можно представить в шестнадцатеричном виде так:

0x00bbggrr

wiki:RGB
27 Aleksey_3
 
31.10.10
13:11
тест wiki:RGB
28 Torquader
 
31.10.10
13:23
(25) Так это Microsoft придумал:

GetNearestColor
The GetNearestColor function returns a color value identifying a color from the system palette that will be displayed when the specified color value is used.

COLORREF GetNearestColor(
 HDC hdc,           // handle of device context
 COLORREF crColor   // color to be matched
);
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший