пример программы на Delphi для получение пикселя экрана. также демонстрирует получение название цвета пикселя экрана на русском языке
создаем массив для хранения информации об элементах цвета. каждый элемент будет включать - название на английском языке. русский эквивалент, цвет в формате RGB список цветов берем с сайта вики http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_ %D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2
Type
Tcolor_rus = record Name:string; // название цвета в Eng Rus_name:string; // Название цвета в Rus Color:Tcolor; // Цвет end;
ColorArray :array of Tcolor_rus; // массив элементов ColorArrayCount:integer; // размер массива
hDC:Thandle; // для получения пикселя экрана
для корректной работы функции поиска максимально похожего цвета используем модуль uses math;
1. Инициализация массива элементов объявим процедуру для добавления элемента массива
Procedure AddCode2(name,Rus_name:string;color:Tcolor); begin ColorArrayCount:=ColorArrayCount+1; setlength(ColorArray,ColorArrayCount); ColorArray[ColorArrayCount-1].Color:=color; ColorArray[ColorArrayCount-1].Name:=name; ColorArray[ColorArrayCount-1].Rus_name:=Rus_name; end; и собственно сама процедура добавления цветов
Procedure InitColor; // инициализация массива цветов begin AddCode2('Alice Blue','Синяя Элис',RGB($F0,$F8,$FF)); AddCode2('Alizarin Crimson','Ализариновый красный',RGB($E3,$26,$36)); AddCode2('Almond','Миндаль Крайола',RGB($EF,$DE,$CD)); AddCode2('Amaranth','Амарантовый',RGB($E5,$2B,$50)); AddCode2('Amber','Янтарный',RGB($FF,$BF,$00)); AddCode2('American Rose','Американский розовый',RGB($FF,$03,$3E)); AddCode2('Amethyst','Аметистовый',RGB($99,$66,$CC)); AddCode2('Anti-flash White','Матовый белый',RGB($F2,$F3,$F4)); AddCode2('Apple Green','Яблочно зеленый',RGB($8D,$B6,$00)); AddCode2('Aqua','Цвет морской волны',RGB($00,$FF,$FF)); AddCode2('Aquamarine','Аквамариновый',RGB($7F,$FF,$D4)); AddCode2('Army Green','Армейский зеленый',RGB($4B,$53,$20)); AddCode2('Arsenic','Мышьяковый',RGB($3B,$44,$4B)); AddCode2('Asparagus','Спаржа',RGB($7B,$A0,$5B)); AddCode2('Azure','Лазурный, Азур',RGB($00,$7F,$FF)); AddCode2('Battleship Grey','',RGB($84,$84,$82)); AddCode2('Beige','Беж, бежевый',RGB($F5,$F5,$DC)); AddCode2('Bistre','Бистр',RGB($3D,$2B,$1F)); AddCode2('Bittersweet','',RGB($FE,$6F,$5E)); AddCode2('Black','Чёрный',RGB($00,$00,$00)); AddCode2('Blond','',RGB($FA,$F0,$BE)); AddCode2('Blue','Синий',RGB($00,$00,$FF)); AddCode2('Bondi Blue','Вода пляжа Бонди',RGB($00,$95,$B6)); AddCode2('Boston University Red','',RGB($CC,$00,$00)); AddCode2('Brass','Латунный',RGB($B5,$A6,$42)); AddCode2('Bright green','Ярко-зелёный',RGB($66,$FF,$00)); AddCode2('Bright turquoise','Ярко-бирюзовый',RGB($08,$E8,$DE)); AddCode2('Bright violet','Ярко-фиолетовый',RGB($CD,$00,$CD)); AddCode2('Bronze','Бронзовый',RGB($CD,$7F,$32)); AddCode2('Brown','Коричневый',RGB($96,$4B,$00)); AddCode2('Buff','Кожа буйвола, палевый',RGB($F0,$DC,$82)); AddCode2('Burgundy','Бургундский',RGB($90,$00,$20)); AddCode2('Burnt Orange','Выгоревший оранжевый',RGB($CC,$55,$00)); AddCode2('Burnt Sienna','Сиена жжёная',RGB($E9,$74,$51)); AddCode2('Burnt umber','Коричневый, умбра жжёная',RGB($8A,$33,$24)); AddCode2('Camouflage green','Хаки',RGB($78,$86,$6B)); AddCode2('Cardinal','Тёмно-красный, кардинал',RGB($C4,$1E,$3A)); AddCode2('Carmine','Карминово-красный',RGB($96,$00,$18)); AddCode2('Carrot','Морковный',RGB($ED,$91,$21)); AddCode2('Celadon','Селадоновый',RGB($AC,$E1,$AF)); AddCode2('Cerise','Светлая вишня',RGB($DE,$31,$63)); AddCode2('Cerulean','Лазурный',RGB($00,$7B,$A7)); AddCode2('Cerulean blue','Лазурно-синий',RGB($2A,$52,$BE)); AddCode2('Chartreuse','Салатовый цвет, шартрез',RGB($7F,$FF,$00)); AddCode2('Chestnut','Каштановый',RGB($CD,$5C,$5C)); AddCode2('Chocolate','Шоколадный',RGB($D2,$69,$1E)); AddCode2('Cinnamon','Коричный',RGB($7B,$3F,$00)); AddCode2('Cobalt','Кобальт синий',RGB($00,$47,$AB)); AddCode2('Copper','Медный',RGB($B8,$73,$33)); AddCode2('Coral','Коралловый, кораллово-красный',RGB($FF,$7F,$50)); AddCode2('Corn','Кукурузный',RGB($FB,$EC,$5D)); AddCode2('Cornflower blue','Васильковый',RGB($64,$95,$ED)); AddCode2('Cream','Кремовый',RGB($FF,$FD,$D0)); AddCode2('Crimson','Тёмно-красный, кровавый, кармазин',RGB($DC,$14,$3C)); AddCode2('Cyan','Циан, васильковый',RGB($00,$FF,$FF)); AddCode2('Dark brown','Тёмно-коричневый',RGB($65,$43,$21)); AddCode2('Dark cerulean','Тёмно-лазурный',RGB($08,$45,$7E)); AddCode2('Dark chestnut','Тёмно-каштановый',RGB($98,$69,$60)); AddCode2('Dark coral','Тёмно-коралловый',RGB($CD,$5B,$45)); AddCode2('Dark goldenrod','Тёмно-золотой',RGB($B8,$86,$0B)); AddCode2('Dark green','Тёмно-зелёный',RGB($01,$32,$20)); AddCode2('Dark Indigo','Тёмный индиго, индиго',RGB($31,$00,$62)); AddCode2('Dark Khaki','Тёмный хаки, хаки',RGB($BD,$B7,$6B)); AddCode2('Dark Olive','Тёмно-оливковый',RGB($55,$68,$32)); AddCode2('Dark pastel green','Тёмный пастельно-зелёный',RGB($03,$C0,$3C)); AddCode2('Dark Peach','Тёмно-персиковый',RGB($FF,$DA,$B9)); AddCode2('Dark pink','Тёмно-розовый',RGB($E7,$54,$80)); AddCode2('Dark salmon','Тёмная лососина',RGB($E9,$96,$7A)); AddCode2('Dark Scarlet','Тёмно-алый',RGB($56,$03,$19)); AddCode2('Dark slate gray','Тёмно-аспидный серый, аспидно-серый',RGB($2F,$4F,$4F)); AddCode2('Dark spring green','Тёмный весенне-зелёный',RGB($17,$72,$45)); AddCode2('Dark tan','Тёмный жёлто-коричневый',RGB($91,$81,$51)); AddCode2('Dark tangerine','Тёмно-мандариновый',RGB($FF,$A8,$12)); AddCode2('Dark Tea Green','Тёмный зелёный чай',RGB($BA,$DB,$AD)); AddCode2('Dark turquoise','Тёмно-бирюзовый',RGB($11,$60,$62)); AddCode2('Dark violet','Глубокий фиолетовый цвет',RGB($42,$31,$89)); AddCode2('Deep sky blue','Голубой цвет',RGB($00,$BF,$FF)); AddCode2('Denim','Джинсовый синий',RGB($15,$60,$BD)); AddCode2('Dodger blue','Защитно-синий',RGB($1E,$90,$FF)); AddCode2('Eggplant','Баклажановый',RGB($99,$00,$66)); AddCode2('Emerald','Изумрудный',RGB($50,$C8,$78)); AddCode2('Fern green','Зелёный папоротник',RGB($4F,$79,$42)); AddCode2('Flax','Льняной',RGB($EE,$DC,$82)); AddCode2('Fuchsia','Фуксия',RGB($FF,$00,$FF)); AddCode2('Gamboge','Гуммигут',RGB($E4,$9B,$0F)); AddCode2('Gold','Золотой',RGB($FF,$D7,$00)); AddCode2('Goldenrod','Золотисто-берёзовый',RGB($DA,$A5,$20)); AddCode2('Gradus Blue','Синий Градуса',RGB($00,$7D,$FF)); AddCode2('Gray','Серый',RGB($80,$80,$80)); AddCode2('Gray-asparagus','Серая спаржа',RGB($46,$59,$45)); AddCode2('Gray-Tea Green','Зелёный серый чай',RGB($CA,$DA,$BA)); AddCode2('Green','Зелёный',RGB($00,$FF,$00)); AddCode2('Green-yellow','Жёлто-зелёный',RGB($AD,$FF,$2F)); AddCode2('Heliotrope','Гелиотроп',RGB($DF,$73,$FF)); AddCode2('Hot pink','Ярко-розовый цвет',RGB($FC,$0F,$C0)); AddCode2('Indian Red','Индийский красный, каштановый',RGB($CD,$5C,$5C)); AddCode2('Indigo','Индиго',RGB($4B,$00,$82)); AddCode2('International orange (Safety orange)','Международный (сигнальный) оранжевый',RGB($FF,$4F,$00)); AddCode2('Jade','Нефритовый',RGB($00,$A8,$6B)); AddCode2('Khaki','Хаки',RGB($C3,$B0,$91)); AddCode2('Klein Blue','Синий Клейна',RGB($3A,$75,$C4)); AddCode2('Lavender','Лаванда, лавандово-синий',RGB($E6,$E6,$FA)); AddCode2('Lavender Blush','Розово-лавандовый',RGB($FF,$F0,$F5)); AddCode2('Lawn Green','Зелёная лужайка',RGB($7C,$FC,$00)); AddCode2('Lemon','Лимонный',RGB($FD,$E9,$10)); AddCode2('Lemon Cream','Лимонно-кремовый',RGB($FF,$FA,$CD)); AddCode2('Light brown','Светло-коричневый',RGB($CD,$85,$3F)); AddCode2('Lilac','Сиреневый',RGB($C8,$A2,$C8)); AddCode2('Lime','Лайм',RGB($CC,$FF,$00)); AddCode2('Linen','Льняной',RGB($FA,$F0,$E6)); AddCode2('Magenta','Малиновый, фуксия',RGB($FF,$00,$FF)); AddCode2('Malachite','Малахитовая зелень (малахитовый)',RGB($0B,$DA,$51)); AddCode2('Maroon','Коричнево-малиновый',RGB($80,$00,$00)); AddCode2('Mauve','Розовато-лиловый',RGB($99,$33,$66)); AddCode2('Midnight Blue','Полуночно-синий',RGB($00,$33,$66)); AddCode2('Mint Green','Зелёная мята (мятный)',RGB($98,$FF,$98)); AddCode2('Moss green','Зелёный мох',RGB($AD,$DF,$AD)); AddCode2('Mountbatten pink','Розовый Маунтбэттена',RGB($99,$7A,$8D)); AddCode2('Mustard','Горчичный',RGB($FF,$DB,$58)); AddCode2('Navajo white','Белый навахо',RGB($FF,$DE,$AD)); AddCode2('Navy','Тёмно-синий, цвет формы морских офицеров',RGB($00,$00,$80)); AddCode2('Ochre','Охра',RGB($CC,$77,$22)); AddCode2('Old Gold','Старое золото',RGB($CF,$B5,$3B)); AddCode2('Old Lace','Старое кружево',RGB($FD,$F5,$E6)); AddCode2('Olive','Оливковый',RGB($80,$80,$00)); AddCode2('Olive Drab','Нежно-оливковый',RGB($6B,$8E,$23)); AddCode2('Orange','Оранжевый',RGB($FF,$A5,$00)); AddCode2('Orchid','Орхидея',RGB($DA,$70,$D6)); AddCode2('Pale Blue','Бледно-синий',RGB($AF,$EE,$EE)); AddCode2('Pale brown','Бледно-коричневый',RGB($98,$76,$54)); AddCode2('Pale carmine','Бледно-карминный, ср. Кармин',RGB($AF,$40,$35)); AddCode2('Pale chestnut','Бледно-каштановый',RGB($DD,$AD,$AF)); AddCode2('Pale cornflower blue','Бледно-васильковый',RGB($AB,$CD,$EF)); AddCode2('Pale magenta','Бледно-пурпурный',RGB($F9,$84,$E5)); AddCode2('Pale mauve','Бледный розовато-лиловый',RGB($99,$66,$66)); AddCode2('Pale pink','Бледно-розовый',RGB($FA,$DA,$DD)); AddCode2('Pale red-violet','Лиловый',RGB($DB,$70,$93)); AddCode2('Pale Sandy Brown','Бледно-песочный цвет',RGB($DA,$BD,$AB)); AddCode2('Pale yellow','Палевый',RGB($F0,$DC,$82)); AddCode2('Pang','Панг',RGB($C7,$FC,$EC)); AddCode2('Papaya whip','Побег папайи',RGB($FF,$EF,$D5)); AddCode2('Pastel green','Пастельно-зелёный',RGB($77,$DD,$77)); AddCode2('Pastel pink','Пастельно-розовый',RGB($FF,$D1,$DC)); AddCode2('Peach','Персиковый',RGB($FF,$E5,$B4)); AddCode2('Peach-orange','Оранжево-персиковый',RGB($FF,$CC,$99)); AddCode2('Peach-yellow','Жёлто-персиковый',RGB($FA,$DF,$AD)); AddCode2('Pear','Грушевый',RGB($D1,$E2,$31)); AddCode2('Periwinkle','Барвинок',RGB($CC,$CC,$FF)); AddCode2('Persian blue','Персидский синий',RGB($66,$00,$FF)); AddCode2('Pine Green','Зелёная сосна',RGB($01,$79,$6F)); AddCode2('Pink','Розовый',RGB($FF,$C0,$CB)); AddCode2('Pink-orange','Оранжево-розовый',RGB($FF,$99,$66)); AddCode2('Plum','Сливовый',RGB($66,$00,$66)); AddCode2('Powder blue','Пороховая синь',RGB($00,$33,$99)); AddCode2('Prussian blue','Берлинская лазурь',RGB($00,$31,$53)); AddCode2('Puce','Красновато-коричневый, пюсовый (устар.), тёмно-коричневый, блошиный',RGB($CC,$88,$99)); AddCode2('Pumpkin','Тыква',RGB($FF,$75,$18)); AddCode2('Purple','Пурпурный',RGB($66,$00,$99)); AddCode2('Raw umber','Умбра',RGB($73,$4A,$12)); AddCode2('Red','Красный',RGB($FF,$00,$00)); AddCode2('Red-violet','Фиолетово-красный',RGB($C7,$15,$85)); AddCode2('Robin egg blue','Цвет яйца дрозда',RGB($00,$CC,$CC)); AddCode2('Rosy Brown','Розово-коричневый',RGB($BC,$8F,$8F)); AddCode2('Royal Blue','Ярко-синий («королевский синий»)',RGB($41,$69,$E1)); AddCode2('Russet','Красновато-коричневый',RGB($75,$5A,$57)); AddCode2('Rust','Ржаво-коричневый',RGB($B7,$41,$0E)); AddCode2('Safety Orange (Blaze Orange)','Сигнальный оранжевый',RGB($FF,$99,$00)); AddCode2('Saffron','Шафрановый',RGB($F4,$C4,$30)); AddCode2('Salmon','Лососёвый',RGB($FF,$8C,$69)); AddCode2('Sandy brown','Песочный цвет',RGB($F4,$A4,$60)); AddCode2('Sangria','Сангрия',RGB($92,$00,$0A)); AddCode2('Sapphire','Сапфировый',RGB($08,$25,$67)); AddCode2('Scarlet','Ярко-красный, алый',RGB($FF,$24,$00)); AddCode2('School bus yellow','Цвет жёлтого школьного автобуса',RGB($FF,$D8,$00)); AddCode2('Sea Green','Зелёное море',RGB($2E,$8B,$57)); AddCode2('Seashell','Цвет морской пены',RGB($FF,$F5,$EE)); AddCode2('Selective yellow','Отборный жёлтый',RGB($FF,$BA,$00)); AddCode2('Sepia','Сепия',RGB($70,$42,$14)); AddCode2('Silver','Серебряный',RGB($C0,$C0,$C0)); AddCode2('Slate gray','Серый шифер',RGB($70,$80,$90)); AddCode2('Spring Green','Зелёная весна',RGB($00,$FF,$7F)); AddCode2('Steel blue','Синяя сталь',RGB($46,$82,$B4)); AddCode2('Swamp green','Болотный',RGB($AC,$B7,$8E)); AddCode2('Tan','Цвет загара',RGB($D2,$B4,$8C)); AddCode2('Tangerine','Мандариновый',RGB($FF,$CC,$00)); AddCode2('Tea Green','Зелёный чай',RGB($D0,$F0,$C0)); AddCode2('Teal','Сине-зелёный',RGB($00,$80,$80)); AddCode2('Tenn?','Краснобуро-оранжевый',RGB($CD,$57,$00)); AddCode2('Thistle','Чертополох',RGB($D8,$BF,$D8)); AddCode2('Titian','Тициановый',RGB($d5,$3e,$07)); AddCode2('Tomato','Томатный',RGB($FF,$63,$47)); AddCode2('Turquoise','Бирюзовый, ср. бирюза',RGB($30,$D5,$C8)); AddCode2('Ultramarine','Ультрамариновый',RGB($12,$0A,$8F)); AddCode2('United Nations Blue','Цвет флага ООН',RGB($5B,$92,$E5)); AddCode2('Vanilla','Ванильный',RGB($F3,$E5,$AB)); AddCode2('Vermilion','Киноварь, ср. киноварь (минерал)',RGB($E3,$42,$34)); AddCode2('Violet','Фиолетовый',RGB($8B,$00,$FF)); AddCode2('Violet-eggplant','Фиолетово-баклажанный',RGB($99,$11,$99)); AddCode2('Viridian','Ядовито-зелёный',RGB($40,$82,$6D)); AddCode2('Wheat','Пшеничный',RGB($F5,$DE,$B3)); AddCode2('White','Белый',RGB($FF,$FF,$FF)); AddCode2('Wine','',RGB($72,$2F,$37)); AddCode2('Wisteria','Глициния',RGB($C9,$A0,$DC)); AddCode2('Xanadu','',RGB($73,$86,$78)); AddCode2('Yandex','Цвет Яндекса',RGB($ff,$cc,$00)); AddCode2('Yellow','Жёлтый',RGB($FF,$FF,$00)); AddCode2('Zaffre','Сини-Ночной',RGB($00,$14,$A8)); AddCode2('Zinnwaldite','Циннвальдит',RGB($EB,$C2,$AF));
end;
// получаем список русских названий цветов Function GetColorList_rus:string; var x:Integer; begin result:=''; for X:=0 to ColorArrayCount-1 do begin if ColorArray[x].Rus_name<>'' then result:=result+ColorArray[x].Rus_name+#13+#10; end; end;
// получит цвет по русскому названию
Function GetElemntFromRus(text:string):Tcolor; var x:integer; begin for X:=0 to ColorArrayCount-1 do if ColorArray[x].Rus_name=text then begin result:=ColorArray[x].Color; exit; end; end;
2. самый похожий цвет из массива элементов
// функция выводит самый похожий цвет из массива элементов Function GetColorFromMassiv(Color_Value:Tcolor;Var DeltaV:integer):integer; var x:integer; mindeX:integer; r1,g1,b1:integer; ri,gi,bi:integer; deltamin,delta:real; begin //Color_Value:=clblack; r1:=GetRValue(color_value); g1:=GetGValue(color_value); b1:=GetBValue(color_value); delta:=255*255*255; deltamin:=delta; mindeX:=ColorArrayCount-2; for X:=0 to ColorArrayCount-1 do begin ri:=GetRValue(ColorArray[x].Color); gi:=GetGValue(ColorArray[x].Color); bi:=GetBValue(ColorArray[x].Color); delta:=power((Ri-R1),2) + power((Gi-G1),2) + power((Bi-B1),2); if delta<deltamin then begin deltamin:=delta; mindeX:=x; end; end; DeltaV:=abs(ColorArray[mindeX].Color-Color_Value); // отличие найденого цвета от исходного result:=mindeX; end;
готовый проект можно скачать по ссылке http://netsoftware.ucoz.ru/21_cveta.zip
|