Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
2 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 4

Как получить шестнадцатеричное значение цвета

16.09.2012, 12:33. Показов 4556. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Доброго Времени суток!
Прошу прощения. Может быть вопрос задан не корректно, но я хотел бы знать возможно ли при помощи функции GetPixel получить значение цвета текущего пикселя в формате #FFFFFF. Если да то прошу привести пример как это можно сделать, а если нет может быть существуют другие способы?
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.09.2012, 12:33
Ответы с готовыми решениями:

Как получить значение цвета из массива?
Добрый день уважаемые. Подскажите пожалуйста, как написать правильно алгоритм что б объекты получали значения цвета из массива? Приведу...

Как получить шестнадцатеричное число из строки
Привет. В переменной типа String записано, в одном из форматов, шестнадцатеричное число произвольной длины. Примеры форматов записи...

Строка из JTextField как шестнадцатеричное значение
тоесть если ми вводим ff1a то должно получиться 0xff1a

10
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
16.09.2012, 13:04
Visual Basic
1
debug.? Hex$(ВашеЧисло)
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
16.09.2012, 13:18
GetPixel возвращает число типа Long, которое обозначает цвет. Превратить число в строку указанного формата можно например такой функцией:
Visual Basic
1
2
3
4
5
6
7
8
9
Function FormatHexColor(n As Long) As String
Dim i&, j&
FormatHexColor = "#      "
For i = 7 To 2 Step -1
    j = n Mod 16
    Mid(FormatHexColor, i) = Chr$(j + 48 - 7 * (j > 9))
    n = n \ 16
Next
End Function
Пример использования:
Visual Basic
1
2
3
4
5
6
?formathexcolor(vbwhite)
#FFFFFF
?formathexcolor(vbblack)
#000000
?formathexcolor(vbgreen)
#00FF00
Добавлено через 5 минут
Во как - оказывается, есть функция Hex

Добавлено через 4 минуты
Тогда так
Visual Basic
1
2
3
4
5
6
Function FormatHexColor(n As Long) As String
Dim h$
FormatHexColor = "#000000"
h = Hex$(n)
Mid(FormatHexColor, 8 - Len(h)) = h
End Function
1
2 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 4
16.09.2012, 14:48  [ТС]
Спасибо. Но к сожалению функция GetPixel возвращает значение типа Color. Пытался привести с помощью Convert но пишет что невозможно преобразовать тип.

Добавлено через 4 минуты
Может проще мне объяснить задачу. Она в простейшем случае заключается в замещении одного цвета другим.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 Dim img As Bitmap
        img = New Bitmap("C:/Shagrat/1.jpg")
        PictureBox1.BackgroundImage = img
        Dim img2 As Bitmap
        img2 = New Bitmap("C:/Shagrat/1.jpg")
 
        For i = 1 To img.Height - 1
            For a = 1 To img.Width - 1
                xColor = img.GetPixel(a, i)
'Вот здесь должно быть условие т.е проверка текущего цвета и с помощью setPixel заменить на другой
            Next
        Next
Dim img As Bitmap

Добавлено через 37 минут
Проблема решена)Спасибо за помощь)
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
16.09.2012, 20:12
Цитата Сообщение от Mephostophilis Посмотреть сообщение
Проблема решена)Спасибо за помощь)
Колись, в чём была проблема?
И как её надо было решать
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
16.09.2012, 20:57
Цитата Сообщение от Апострофф Посмотреть сообщение
И как её надо было решать
Есть простейшая формула разложения цвета на составляющие RGB
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
 
Private Sub Command1_Click()
Dim Color As Long
Dim R As Byte, G As Byte, B As Byte
'Color = Picture1.Point(10, 10) ' Средствами VB6
Color = GetPixel(Picture1.hdc, 10, 10) ' Средствами API (если надо скорость)
 
R = Color And &HFF
G = (Color \ 256) And &HFF
B = (Color \ 65536) And &HFF
MsgBox "#" & Hex$(R) & Hex$(G) & Hex$(B)
End Sub
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
16.09.2012, 21:20
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Есть простейшая формула разложения цвета на составляющие RGB
Ну ка, и что получается, например, для Color = &H300102 ?
0
2 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 4
16.09.2012, 22:15  [ТС]
Блин....Я наверное не в том разделе создал тему..я писал под NET..
Но если интересно существует функция Color.FromArgb Она либо возвращает либо задает цвет ..( Узнал только сегодня на сайте http://msdn.microsoft.com) ... Вообще давно бился над этой идеей ( В силу того что программистом я себя не считаю ) но не было времени ... но вот сегодня снова сдвинулся с мертвой точки ... Всем большое спасибо за внимание и помощь.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
16.09.2012, 22:24
Mephostophilis, теперь перемещать уже поздно.
Если вопрос не исчерпан и Вам по прежнему требуется помощь - создайте новую тему в разделе .Net
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
16.09.2012, 22:25
Цитата Сообщение от Казанский Посмотреть сообщение
что получается, например, для Color = &H300102
Нормально получится. В ответе HTML представление цвета т.е. не RGB, а BGR, ну и надо проставить 0, там где их срезал Hex$
Лечится элементарно
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
 
Private Sub Command1_Click()
Form1.BackColor = &H300102 ' ваш цвет формы
Dim Color As Long
Dim R As Byte, G As Byte, B As Byte
Color = Form1.Point(10, 10) ' Средствами VB6
'Color = GetPixel(Form1.hdc, 50, 50) ' Средствами API (если надо скорость)
 
R = Color And &HFF
G = (Color \ 256) And &HFF
B = (Color \ 65536) And &HFF
Rh = IIf(R < 16, "0" & Hex(R), Hex(R))
Gh = IIf(G < 16, "0" & Hex(G), Hex(G))
Bh = IIf(B < 16, "0" & Hex(B), Hex(B))
'
MsgBox "#" & Bh & Gh & Rh
End Sub
1
2 / 0 / 0
Регистрация: 16.09.2012
Сообщений: 4
16.09.2012, 22:39  [ТС]
С точки зрения задачи которую я ставил перед собой вопрос исчерпан. Благодарю за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2012, 22:39
Помогаю со студенческими работами здесь

Получить текстовое значение цвета заливки ячейки
VBA. W 7. Нужно получить текстовое значение цвета заливки Например, я так это представляю: ActiveCell.Interior.ColorIndex = 6 ...

Какое десятичное значение имеет шестнадцатеричное число $FF?
Какое десятичное значение имеет шестнадцатеричное число $FF?

Исправление ошибки шестнадцатеричное значение 0x20, не может стоять в начале имени
Ошибка сервера в приложении '/'. Ошибка синтаксического анализатора Описание: Ошибка при разборе ресурса, требуемого для...

Как получить пиксели (цвета) из image
Есть Image. Как получить все цвета пикселей? А то все что нахожу не очень подходит. Колдовал с bitmapimage, но что-то не вышло.

Как отсканировать Picturebox и получить цвета по RGB?
Помогите пожалуйста. Через API умею, но занимает неприемлимое время.Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru