Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 13.04.05 02:38
Кстати, у меня вопросик (пример был, да потерялся): как мне из кода цвета отдельно получить R, G и B?? там код очень простой был, какие-то числа мудрёные прибавлялись и всё! так быстро, а я посеял :(

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 13.04.05 02:43
r = c mod 256
g = (c and &FF00&;) \ 256
b = c \ 65536

Ответить

Номер ответа: 9
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #9
Добавлено: 13.04.05 02:56
Sharp, пасибо.

Ответить

Номер ответа: 10
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #10
Добавлено: 13.04.05 03:01
g = (c and &FF00&;) \ 256


только кажись тут чё то не пашет :(

Ответить

Номер ответа: 11
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #11 Добавлено: 13.04.05 03:42
Точно, задом наперед, а я с палитрой какой-то попутал :)

Morpheus
Сделай-ка вот так:

Private Sub Form_Load()
    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-сайт: xury.zx6.ru
 Профиль | | #12
Добавлено: 13.04.05 04:04
2 cresta: точно, вот такой код был. вроде пашет

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам