Страница: 1 |
Страница: 1 |
Вопрос: Получение цвета
Добавлено: 12.04.05 11:29
Автор вопроса: Жека
Юзаю CommonDialog методом ShowColor. Соответственно через Color получаю код цвета.Но мне его нужно получить в 16-ти ричной форме. Следов. вызов функции Hex(Color). Однако результат совершенно не тот.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 12.04.05 11:43
А почему не тот? Какой он должен быть?
Номер ответа: 2
Автор ответа:
Жека
Вопросов: 7
Ответов: 4
Профиль | | #2
Добавлено: 12.04.05 12:49
Ну к примеру я выбираю красный, получаю код, перевожу в Hex, а он получается какой-нибудь желтый или какой-нить другой
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 12.04.05 13:59
Ну покажи кодом, как из красного получается жёлтый...
Номер ответа: 4
Автор ответа:
Жека
Вопросов: 7
Ответов: 4
Профиль | | #4
Добавлено: 12.04.05 23:32
Dim c as Long
Dim s as String
...
c = CommonDialog.Color
s = "#" & Hex(c)
Надеюсь понятно, что такой формат используется для отображения цвета в вебе? Получается далеко не тот цвет, который я выбираю в диалоговом окне.
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 13.04.05 00:08
Для web цвета насколько я понимаю, имеют 8 бит оттенков. 256 фиксированных цветов. То значение, которое возвращает CommonDialog, имеет 24 бита. Это совсем разные вещи. А ты хочешь строковой функцией Hex 24-разрядное число преобразовать к ближайшему фиксированному web-цвету. Так не бывает
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 13.04.05 02:35
В формате hex(RGB) сперва идет B, потом G, потом R, а в веб-формате наоборот.
s = "#" & mid(hex(c),5,2) & mid(hex(c),3,2) & mid(hex(c),1,2)
Номер ответа: 7
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #7
Добавлено: 13.04.05 02:38
Кстати, у меня вопросик (пример был, да потерялся): как мне из кода цвета отдельно получить R, G и B?? там код очень простой был, какие-то числа мудрёные прибавлялись и всё! так быстро, а я посеял
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 13.04.05 02:43
r = c mod 256
g = (c and &FF00& \ 256
b = c \ 65536
Номер ответа: 9
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #9
Добавлено: 13.04.05 02:56
Sharp, пасибо.
Номер ответа: 10
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #10
Добавлено: 13.04.05 03:01
только кажись тут чё то не пашет
Номер ответа: 11
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #11
Добавлено: 13.04.05 03:42
Точно, задом наперед, а я с палитрой какой-то попутал
Morpheus
Сделай-ка вот так:
Me.BackColor = &H798AFC
R = (Me.BackColor And &HFF&
G = (Me.BackColor \ &H100& And &HFF&
B = (Me.BackColor \ &H10000) And &HFF&
Debug.Print Hex(Me.BackColor)
Debug.Print Hex(R)
Debug.Print Hex(G)
Debug.Print Hex(B)
End Sub
Номер ответа: 12
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #12
Добавлено: 13.04.05 04:04
2 cresta: точно, вот такой код был. вроде пашет