ПредишенСледващото

Работа с цвят в Делфи

В игри и графични пакети, които байт намери приложение. Той често показва, прозрачност, но в офис приложения просто игнорират.

Както вече знаете, един байт може да приема стойности 0-255 (в десетичен вид) или 0 до FF (шестнадесетичен). Така че в шестнадесетичен цвят ще изглежда SOOFFFFFF. Само тогава веднага трябва да се отбележи, че първите две нули - това е още един байт, след това преминете към FF синьо, след това зелено и FF до последния FF за червено. Оказва се, че в паметта се съхраняват като цвета на BGR (в обратен ред). Абсолютно червено ще бъде равна на $ 000000FF. напълно зелено - $ 0000FF00. и синьо - S00FF0000.

Нека се опитаме да се научат как да работят с цвят на практика, като в същото време и да се запознаят с функциите, които се нуждаят. Създаване на ново заявление и инсталиране на компонентите върху него, както е показано на фиг.

Така че, под формата на три TEdit компонент. За червено име компонент RedEdit на, за зелена - GreenEdit, О, и за SINvGO - BlueEdit. Също така във формуляра има бутон за промяна на цвета (името му не е от значение) и CoiorDialog компонент за смяна на цвета.

Ако създадете свой собствен пример, се опита да сложи всичко, както е показано на фигурата по-горе (по-близо до десния край), тъй като в ляво ще начертаете квадрат.

За бутон събитие # 111; nКликнете, напишете кода показан на Обява:

процедура TFormi.ButtonlClick (подателя: TObj др);

В реактивна обявена една променлива тип число Longint. Това число 4 байта, тя се използва за съхраняване на цветови стойности.

Първият ред показва прозорец ColorDialogl.Execute цвят промяна. Ако потребителят не избере цвета (тя казва, че ако не се изработи), изпълнението на процедурата е прекъсната чрез излизане.

Тогава избран цвят ColorDialog1 .color тип TCoior се превръща в един прост номер с функция coiorToRGB. Тази функция трябва да бъде прехвърлена на цвят под формата на TCoior (минаваме ColorDialogl.color), и го връща цяло число 4-байт номер, който пишем в променлива. функция CoiorToRGB изпълнява една много важна, екшън почиства първия байт, който просто не носи семантично натоварване в 24-битов RGB система.

Следващият ред е предоставянето на запис RedEdit стойности червения цвят компонент. За да направите това, първо се използва функция GetRValue. Тя предава цвят стойност цяло число (променлива). Резултатът е един байт номер, който показва стойността на червено компонент. Тъй като към резултатите номер, преди да бъде назначен за реда за въвеждане, той трябва да се преобразува в низ. За да направите това, превежда го в текст, използвайки познатите функции ние IntToStr.

Ние правим едно и също нещо с зеленината в следващия ред код. Само за зеления компонент се използва функция GetGValue.

За синьо компонент използва функция GetBValue. Така че, в края на краищата това е постигнато, ние счупи цвета на променливата на 4 байта с индивидуални байта по цвят и да ги взриви в съответния вход линия.

След това трябва да се покаже прозорец, изготвен с призив да се пребоядиса метод.

За OnPaint събитие напиши следния код:

процедура TForml.FormPaint (подателя: TObj др); започвам

StrToIntDef (GreenEdit.Text, 0), StrToIntDef (BlueEdit.Text, 0));

Canvas.Rectangle (10,10, 250, 150);

Тук ние трябва да направим обратното въздействие - да превърне трите компонента на цвета на полетата за въвеждане в един цвят стойност. Използва се за тази функция RGB (R, G, б). Тази функция има три параметъра, като всички те са цели числа.

  • R - червен стойност.
  • г - стойността на зелено.
  • в - стойността на синьо.

Както параметри се предават стойностите, показани в съответните входни линии, с предварително превръщане на линиите в техния брой.

В резултат на превръщането цвят в цвят запис четка. След това чертае правоъгълник, където цвета на фона е този, който сме избрали.

И последно място - ще създаде манипулатор събитие # 111; nchange за всички входни линии.

  1. Маркирайте реда за въвеждане на червения цвят.
  2. Задръжте смяна, кликнете върху останалите линии.

Имате всички входни линии сиви рамки трябва да бъдат откроени. Сега отидете на Object инспектор в раздела Събития и кликнете два пъти върху дадено събитие # 111; nchange, за да се създаде манипулатор веднага за всички избрани елементи. Това пише следния код:

процедура TForm1.RedEditChange (Sender: TObject);

Опитайте се да стартирате този пример. Сега изберете цвят, и можете да видите на компонентите на цвета. Можете дори да промените стойностите директно в изходни поредици, а резултатът ще бъде отразено незабавно в цвета на правоъгълника.

Работа с цвят в Делфи, Делфи, Delphi компонент, източник Delphi

ВНИМАНИЕ. Не забравяйте, че нито един от компонентите на цвят не може да бъде повече от 255, в противен случай компонента надхвърля максималния размер на байта.

А сега погледнете константите, които вече са закупени за основните цветове. Всъщност можете да ги използвате в своите програми и да възлага, както по-рано бе случаят в примера. Той няма да се изброят всички константи, тъй като можете да ги направите по всяко време да се намери, ако щракнете върху в инспектора обект на свойствата на цвета всеки компонент. Всичко, което виждате в този списък - това е константа, която може да се използва. Този метод е сравнително лесно, защото, след като тя е видима и постоянен цвят.

Помогнете на проекта! Кажи на приятел за този сайт:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!