Цвет в HTML - редакторе

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

Цвет в HTML - редакторе

Сообщение John_mc » 05.06.2003 (Чт) 17:01

Я пытаюсь сделать свой HTML - Редактор, мне нужно сделать так:
При выборе цвета (например, в стандартном диаловогом окне DommonDialog окна цвета), цвет такойто отображается в RichTextBox'е

Например:
Выбрал я в окне выбора цвета Голубой с оттенком

А в RichTextBox'e должно появиться: #3366CC

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.06.2003 (Чт) 17:17

с кодом пока обломс, но смысл примерно такой:

получаешь из диалога цвет в переменную. потом значение этой переменной делиш на значения состваляющих RGB с помощью вот этого
Код: Выделить всё
Public Function GetRGB(Color As OLE_COLOR, Red As Integer, Green As Integer, Blue As Integer)
    'gets Red, Green, and Blue values of a c
    '     olor
    'I think i saw this on www.PlanetSourceC
    '     ode.com
    TranslateColor Color, 0, Color
    Red = Color And &HFF
    Green = (Color And &HFF00&) / 255
    Blue = (Color And &HFF0000) / 65536
End Function


функция пользуется следующим образом:

Код: Выделить всё
Dim R As Integer, G As Integer, B As Integer
GetRGB <Цвет_из_диалога>, R, G, B ' переменные R, G и B получат значения составляющих


дальше каждую составляющую переводиш в Hex, склеиваешь в одну строку и вставляешь в RitchText
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 05.06.2003 (Чт) 17:17

RichTextBox1.SelStart = Len(RichTextBox1.Text)
RichTextBox1.SelText = "#" & Hex(CommonDialog1.Color)

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 05.06.2003 (Чт) 17:26

GoGosha писал(а):RichTextBox1.SelStart = Len(RichTextBox1.Text)
RichTextBox1.SelText = "#" & Hex(CommonDialog1.Color)


это не прокатит
он не полностью число возвращает

например, выберешь чистый красный цвет. RGB = (255,0,0)
Hex вернет тебе FF и все. а если ты такой цвет вставишь в HTML-код он у тебя будет совсем не красным.
нужно чтобы было #RRGGBB
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 05.06.2003 (Чт) 17:33

RichTextBox1.SelStart = Len(RichTextBox1.Text)
RichTextBox1.SelText = "#" & Hex(Color) + Left("000000", 6 - Len(Hex(Color)))

John_mc
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 112
Зарегистрирован: 15.06.2002 (Сб) 6:18
Откуда: Russia, Новосибирск

Сообщение John_mc » 05.06.2003 (Чт) 18:38

Спасибо всем! Работает! :D
Но всё же иногда "путает" цвета :cry:
Как этого можно избежать?

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 05.06.2003 (Чт) 19:13

John_mc писал(а):Спасибо всем! Работает! :D
Но всё же иногда "путает" цвета :cry:
Как этого можно избежать?


И какой цвет перепутала?

John_mc
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 112
Зарегистрирован: 15.06.2002 (Сб) 6:18
Откуда: Russia, Новосибирск

Сообщение John_mc » 06.06.2003 (Пт) 7:50

С "простыми" цветами проблем нет(которые входят в 256), а с разными тонами - путаница. Например, светло - голубой спутал с оттенком оранжевого :cry:

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 06.06.2003 (Пт) 17:31

Что значит
John_mc писал(а):которые входят в 256

все цвета можно разложить на три состовляюшие, каждая из которых НЕ БОЛЬШЕ 255(&HFF)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.06.2003 (Пт) 17:35

Имеется в виду стандартный набор из 256 цветов :) Т.н. web colors. Их посмотреть можно в Photoshop или же на сайте design.ru :)

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 09.06.2003 (Пн) 4:39

Так тут есть один Bug. Если ты используешь Hex$ то она возвращает не совсем RGB. По-моему BBGGRR, хотя могу и ошибаться. Пользуйся советом Cyrax'a, а можешь посмотреть исходник моего класса. http://msvb.boom.ru - раздел исходники, есть и статья того-же толка. Раздел посвящённый графике.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.06.2003 (Пн) 10:12

Почему же баг, всё правильно. VB ожидает цвет в формате &h00BBGGRR, а html - #RRGGBB.
Соответственно, нужно разделить цвет на составляющие и поменять их местами. Про разделение составляющих топик есть, поищи.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 10.06.2003 (Вт) 4:22

Не так выразился, извините. Кстати, разве это нельзя считать багом конкретной программы?

John_mc
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 112
Зарегистрирован: 15.06.2002 (Сб) 6:18
Откуда: Russia, Новосибирск

Сообщение John_mc » 10.06.2003 (Вт) 10:12

2 Dagobert: Благодарю за Пример (который находится на твоём сайте) - Грамотно сделал. :wink:


:!: Есть у кого - нибудь ещё примеры такого рода(желательно с использованием CommonDialog) :?:


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList  
cron