цвета в VB6 - ничего не понимаю

User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

цвета в VB6 - ничего не понимаю

Post by AnyaGal »

Мне надо передать цвета из програмки, написанной на VB6 в web приложение по номеру.
В VB я читаю BackColor propety textbox контрола, сохраняю номер цвета в базе данных, веб приложение получает данные из БД и отображает на asp странице.

Проблема в том, что номера цветов в VB не соответствуют RGB формату.

Например надо передать такой синий цвет

Image

В окошке property VB этому цвету соответствует номер

Image


или 16744576 в десятичном формате.

Но этому номеру на ASP странице соответствует не синий а оранжевый цвет.

И вообще RGB вроде отображается 6-тью цифрами в hex формате, а у VB там 8 цифр.

Не знаете случайно, в чем тут дело и как найти соответсвие между цветами? :roll:
You do not have the required permissions to view the files attached to this post.
Last edited by AnyaGal on 19 Aug 2003 00:55, edited 2 times in total.
User avatar
Komissar
Уже с Приветом
Posts: 64875
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Post by Komissar »

Вот-вот, а со стаканчиком мерло уже давно бы разобрались :mrgreen:

ухожу, ухожу, я в ВБ все равно ничего не понимаю...
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

Visual Basic Reference - BackColor, ForeColor Properties:

The valid range for a normal RGB color is 0 to 16,777,215 (&HFFFFFF). The high byte of a number in this range equals 0; the lower 3 bytes, from least to most significant byte, determine the amount of red, green, and blue, respectively. The red, green, and blue components are each represented by a number between 0 and 255 (&HFF). If the high byte isn't 0, Visual Basic uses the system colors, as defined in the user's Control Panel settings and by constants listed in the Visual Basic (VB) object library in the Object Browser.

Т.е. для преобразования в RGB нужно взять 6 последних байта из VB Color и затем просто записать их в обратном порядке. Для Вашего случая (&H00FF8080) это будет 0x8080FF или 8421631.
Cheers
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Post by AnyaGal »

tengiz, спасибо большое. :)

Самое интересное, что я эту help страницу читала, но видимо не так внимательно как следовало - там везде написано что используются RGB colors и указывается 6 знаков (&HFFFFFF), а не 8 как отведено в поле пропертиес в VB6, a информацию, что надо переставить байты R и B проглядела.

Но вообще в VB6 я бы этот стандарт назвала не RGB, a BGR :wink: , для большей ясности.

В .NET кстати уже сделано по-другому - там три числа соответствующие Red, Green and Blue идут через запятую и порядок правильный.
You do not have the required permissions to view the files attached to this post.

Return to “Вопросы и новости IT”