Цвет любой точки экрана

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Цвет любой точки экрана

Сообщение Sun07 » 22.10.2006 (Вс) 3:36

Подскажите, как получить цвет любой точки экрана и размеры экрана в пикселах?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 22.10.2006 (Вс) 4:27

1. GetPixel(GetDC(0), X, Y)
2. Screen.Height и Screen.Width c делением на Screen.TwipsPerPixel(X/Y)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 23.10.2006 (Пн) 22:23

кто знает, какие биты незначащие в модели RGB при установке всего цветов экрана 16 бит, 8 бит? Я так полагаю, младшие в каждом байте R,G,B?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.10.2006 (Вт) 8:05

Чего?
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.10.2006 (Вт) 10:03

Модель RGB предполагает 32-разрядное представление цвета
Весь мир матрица, а мы в нем потоки байтов!

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 24.10.2006 (Вт) 22:57

Модель RGB предполагает 32-разрядное представление цвета


Модель RGB предполагает 24-разрядное представление цвета: 8 бит красный + 8 зелёный + 8 синий.

32-разрядное представление предполагает модель RGBA = 24 rgb + 8 alpha, CMYK и некоторые другие)

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 25.10.2006 (Ср) 14:46

Да-да. Всё правильно. 3 байта.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.10.2006 (Ср) 15:36

Главное не забыть, что 4-ый байт таки все же имеется в RGB цвете, но равен нулю!
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2006 (Ср) 15:39

Разве?
4 байт есть в Long/dword.
А в модели его нет. И, например, в 24-битном BMP-файле на точку отводится три байта, а не четыре.
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.10.2006 (Ср) 15:45

Попутал модель с представлением RGB-цвета системой... :oops:

Да, действительно, в модели 4-го байта действительно нет, а при представлении цвета в всистеме используется DWORD/Long, первые три байта которого содержат три компонента цвета, а 4-ый нулевой.
Весь мир матрица, а мы в нем потоки байтов!

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 25.10.2006 (Ср) 15:51

Вроде 4ый байт поначалу был просто зарезервирован. Может поэтому, кстати, в 98ой винде был режим True Color (32bit) ?

Но если говорить о самой цветовой модели, а не о её реализации - то всё же три.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 25.10.2006 (Ср) 16:12

Эээ... Так он вроде и в Вын2к... Да и в ХР присутствует в переименованном виде
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.10.2006 (Сб) 21:24

nekeda писал(а):Вроде 4ый байт поначалу был просто зарезервирован. Может поэтому, кстати, в 98ой винде был режим True Color (32bit) ?

Нет. Он всегда был пустым.
Просто умножать на 4 быстрее, чем на 3. Поэтому видеопамять адресуется не тройками байт, а четвёрками. Реальной памяти под четвёртый байт в этом случае не отводится.
Изображение

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 28.10.2006 (Сб) 21:49

А чему Равен ALPHA я имею ввиду когда он есть?

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 29.10.2006 (Вс) 2:48

чему задашь. 0-255.

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 29.10.2006 (Вс) 14:12

нет ну понятно, Но а на что он повлияет - создаст настоящее прозрачное изображение?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.10.2006 (Вс) 15:15

Ага. А иначе зачем он?
Изображение

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 29.10.2006 (Вс) 20:28

а как реализовать, например, pset с alpha

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 29.10.2006 (Вс) 20:47

Ручками.

Формула: R2 = (R0 * (255 - (Уровень Alpha)) + R1 * (Уровень Alpha)) / 255
R0 и R1 - красный компонент пикселей, которые надо сложить...
То же касается G и B.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.10.2006 (Вс) 20:57

yaklit писал(а):а как реализовать, например, pset с alpha

при помощи GDI+ :cool:
Изображение


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 95

    TopList