Приветствую Вас Гость | RSS

Delphi заготовки

Суббота, 23.11.2024, 10:00
Главная » 2012 » Апрель » 13 » Получение название цвета пикселя экрана на русском языке
12:42
Получение название цвета пикселя экрана на русском языке
пример программы на 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

Просмотров: 3007 | Добавил: NetSoftWare | Рейтинг: 2.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: