Опять с переводом цвета

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Серый
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 06.11.2004 (Сб) 10:51

Опять с переводом цвета

Сообщение Серый » 06.11.2004 (Сб) 11:01

Значит так: мне надо перевести цвет из Long в вид HTML

Я использую такой код:
Код: Выделить всё
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Text1 = Reverse(Picture1.Point(X, Y))
End Sub

Private Function Reverse(ByVal rgb As Long) As String
    Dim Red As Long, Green As Long, Blue As Long
    Red = rgb And 255: rgb = rgb \ 256
    Green = rgb And 255: rgb = rgb \ 256
    Blue = rgb And 255
   
    Reverse = "&H" & Hex(Red) & Hex(Blue) & Hex(Green)
End Function


Но цвет не тот, я даже менял местами R,G,B - но ничего не получается.
Очень срочно надо

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 06.11.2004 (Сб) 11:12

а ты не пробовал ...
что-то типа

'К примеру конвертим цвет 546546 в HTML
Код: Выделить всё

AA1 = Hex(546546)
AA1 = String(6 - Len(AA1), "0") + AA1
HTML = Right(AA1, 2) + Mid(AA1, 3, 2) + Left(AA1, 2)


В твоем случае, это так выглядит
Код: Выделить всё
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Text1 = Reverse(Picture1.Point(X, Y))
End Sub

Private Function Reverse(ByVal rgb As Long) As String
Dim AA1 as String
AA1 = Hex(rgb)
AA1 = String(6 - Len(AA1), "0") + AA1
Reverse = Right(AA1, 2) + Mid(AA1, 3, 2) + Left(AA1, 2)
End Function
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 06.11.2004 (Сб) 12:01

Теперь объясню почему у тебя могло неработать.
Изначально в твоей проге еррор в формировании строки, неправильная последовательность:)

Предположим ты разложил "010AFF" (68351) на цвета и должен был получить RGB(1, 10, 255), а получил RGB(1, 255, 10) - "01FF0A" - будем далее смотреть исходя из ошибочного разложения :)

RED = 1, GREEN = 10, BLUE = 255

тогда реверс получается такой
Reverse = "&H" & "1" & "FF" & "A", т.е.
Reverse = "&H1FFA" (8186)
А должно было быть "&H01FF0A" (130826) и для HTML надо местами менять R и B, т.е. "&H0AFF01" (720641)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, YaCy [Bot] и гости: 0

    TopList