Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hex цвет 
V
    Опции темы
eldar22
Дата 26.9.2009, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: нет
Всего: 1



Здравствуйте!
Не как не могу использовать hex цвета вернее его обозначение 
Код

Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Dim s As Long, d As Long

Private Sub Form_Load()
d = RGB(0, 0, 0)  то есть здесь можно было  использовать hex цвет (FFFFFF)

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
s = SetPixel(Picture1.hdc, X / 15, Y / 15, d)
Picture1.Refresh
End Sub


А вот как перевести  RGB  в hex  чтобы можно было вводить  значение hex цвета (FFFFFF)
PM MAIL WWW   Вверх
iff
Дата 26.9.2009, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: -1
Всего: 16



Цитата

А вот как перевести  RGB  в hex  чтобы можно было вводить  значение hex цвета (FFFFFF) 

Я так понял вам надо перевести значение RGB в значение hex?
Тогда так:

В этом коде используются переменные:
R - значение красного цвета (от 0 до 255 или от &H00& до &HFF&)
G - значение зелёного цвета (от 0 до 255 или от &H00& до &HFF&)
B - значение синего цвета (от 0 до 255 или от &H00& до &HFF&)
C& - значение цвета в формате hex (от &H000000& до &HFFFFFF&)
Код

C& = B * &H10000& + G * &H100& + R&


Это сообщение отредактировал(а) iff - 26.9.2009, 07:45


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
eldar22
Дата 26.9.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: нет
Всего: 1



Нет не просто перевести 
просто у меня есть значение hex цвета FFCCCC мне надо ввести это значение в textbox нажать кнопку и setpixel начнёт рисовать этим цветом
PM MAIL WWW   Вверх
iff
Дата 26.9.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: -1
Всего: 16



Т.е. вы вводите в текстбокс шестнадцатиричное число, нажимаете кнопку, и водя мышкой по пикчербокс рисуете цветом, который ввели в текстбокс?
тогда так:
На форме имеется пикчебокс Picture1, кнопка Command1, текстовое поле Text1. Эти объекты имеют свойства, заданные по умолчанию, кроме Picture1.AutoRedraw, оно ровно True
Теперь код:
Код

Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Dim d As Long, N As Long, Col As String

Private Sub Command1_Click()
d = 0
Col = UCase(Text1.Text)
For i = 1 To 6
 If Mid(Text1.Text, i, 1) <> Val(Mid(Text1.Text, i, 1)) Then
  N = Asc(Mid(Col, i, 1)) - 55
 Else
  N = Val(Mid(Col, i, 1))
 End If
 d = d + N * (16 ^ (i - 1))
Next i
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SetPixel Picture1.hdc, X / 15, Y / 15, d
Picture1.Refresh
End Sub

Но можно использовать и штатные функции ( не присоединять библиотеку gdi32). Функцией PSet можно добиться таково же результата (здесь свойство Picture1.AutoRedraw может быть ровно и False, от этого программа не перестанет рисовать):
Код

Dim d As Long, N As Long, Col As String

Private Sub Command1_Click()
d = 0
Col = UCase(Text1.Text)
For i = 1 To 6
If Mid(Text1.Text, i, 1) <> Val(Mid(Text1.Text, i, 1)) Then
N = Asc(Mid(Col, i, 1)) - 55
Else
N = Val(Mid(Col, i, 1))
End If
d = d + N * (16 ^ (i - 1))
Next i
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.PSet (X, Y), d
End Sub

Только вот и в первом, и во втором случае, если быстро вести мышкой, то рисуется не линия, а ряд точек. Это можно исправить применяя функцию Line

Это сообщение отредактировал(а) iff - 26.9.2009, 16:37


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
eldar22
Дата 26.9.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: нет
Всего: 1




iff
 smile 
вы свой плюсик заслужили!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.