Copyright © 2010 Promsite. All Rights Reserved.
Выбор цвета часть II (GetPixelColor)
Автор В. Алексеев aka prom
Фрагмент кода модуля формы Main.cpp
Когда я начал работу над проектом, то представлял, что код будет значительно сложнее. В принципе получился аналог знаменитой программы GetPixel, но кода этой программы естественно не видел, а " цвет он и в Африке цвет" . Единственная трудность над которой поломал голову, это как сделать временную блокировку, т.е. зафиксировать цифровое значение цвета для записи его в буфер и обратное "оживление" программы. Перебрав несколько вариантов, в т.ч. и с API пришел к выводу, что они слишком громоздкие и должен же быть какой-то простой вариант. В итоге он нашелся, что подтвердило пословицу "ничто не ново под Луной". Но в коде cpp сознательно не показываю, предлагаю самим потренироваться, и возможно найдется лучший вариант.
Фундамент программы образуют всего две функции: это GetDC(NULL) и GetPixel(hdc,X,Y). Первая возвращает контекст устройста, в данном случае дисплея. Параметр NULL указывает, что работать будем со всей поверхностью экрана. Вторая функция возвращает цвет пикселя в указанной точке с координатами X и Y.
Как работает программа понятно интуитивно. Единственное, для того чтобы скопировать шестнадцатеричное значение цвета пикселя необходимо сначала приостановить программу с помощью клавиши левый CTRL, а затем копировать в буфер. Для продолжения работы программы достаточно повторно нажать эту же клавишу.
Объединив проекты из "Выбор цвета" части 1 и 2 можно получить полноценную программу представляющую интерес для дизайнера. Кроме Hex, Dec, RGB форматов представления цвета в цифровом виде другие экзотические форматы не рассматривал, т.к. практически никогда их не встречал и не использовал. У кого есть интерес, думаю, что сделать это не сложно.
Интерфейс программы GetPixelColor