Работа с цвят в Делфи
В игри и графични пакети, които байт намери приложение. Той често показва, прозрачност, но в офис приложения просто игнорират.
Както вече знаете, един байт може да приема стойности 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 за всички входни линии.
- Маркирайте реда за въвеждане на червения цвят.
- Задръжте смяна, кликнете върху останалите линии.
Имате всички входни линии сиви рамки трябва да бъдат откроени. Сега отидете на Object инспектор в раздела Събития и кликнете два пъти върху дадено събитие # 111; nchange, за да се създаде манипулатор веднага за всички избрани елементи. Това пише следния код:
процедура TForm1.RedEditChange (Sender: TObject);
Опитайте се да стартирате този пример. Сега изберете цвят, и можете да видите на компонентите на цвета. Можете дори да промените стойностите директно в изходни поредици, а резултатът ще бъде отразено незабавно в цвета на правоъгълника.
ВНИМАНИЕ. Не забравяйте, че нито един от компонентите на цвят не може да бъде повече от 255, в противен случай компонента надхвърля максималния размер на байта.
А сега погледнете константите, които вече са закупени за основните цветове. Всъщност можете да ги използвате в своите програми и да възлага, както по-рано бе случаят в примера. Той няма да се изброят всички константи, тъй като можете да ги направите по всяко време да се намери, ако щракнете върху в инспектора обект на свойствата на цвета всеки компонент. Всичко, което виждате в този списък - това е константа, която може да се използва. Този метод е сравнително лесно, защото, след като тя е видима и постоянен цвят.
Помогнете на проекта! Кажи на приятел за този сайт:
Свързани статии