Хелпикс

Главная

Контакты

Случайная статья





Основы программирования. Занятие 1. Реализация изображений. Графические методы в Delphi.. Задание: Изучите теорию, выполните предложенные задания. Код отправьте скриншотом или текстовым файлом педагогу «Вконтакте».. Пиксели и цвет



Основы программирования

Занятие 1. Реализация изображений. Графические методы в Delphi.

Задание: Изучите теорию, выполните предложенные задания. Код отправьте скриншотом или текстовым файлом педагогу «Вконтакте».

Пиксели и цвет

У вас наверняка возник вопрос: «А как в программах для Windows выполняется рисование»?

Каждый компонент, на котором можно нарисовать, имеет свойство Canvas (холст), с помощью его свойств и методов можно нарисовать все, что угодно.

  Создайте новый проект с формой (VCL Forms Application) и сохраните его в папке Пиксели под именем Pixels.bdsproj.

Определить или изменить цвет отдельных пикселей можно с помощью свойства-массива Pixels. У каждого пикселя две стандартных координаты: x — расстояние от левой границы холста, y — расстояние от верхней границы. Точка (0,0) — это левый верхний угол.

Чтобы узнать или поменять цвет пикселя с координатами (x,y), используют обращение Canvas.Pixels[x,y].

Некоторые элементы формы (например, заголовок и рамка) недоступны для рисования («обычными» методами). Область, с которой можно работать, называется клиентской, ее ширина и высота определяются через свойства формы ClientWidth и ClientHeight. Поскольку отсчет координат начинается с нуля, нижний правый пиксель клиентской области имеет координаты (ClentWidth-1,ClientHeight-1).

  Добавьте обработчик события OnClick для формы: var x, y: integer; begin for x:=0 to ClientWidth-1 do for y:=0 to ClientHeight-1 do     Canvas.Pixels[x,y] := clRed; end; Запустите программу и щелкните мышью по форме.

Легко понять, что в этой программе в двойном цикле перебираются все пиксели, и для каждого устанавливается красный цвет, который обозначается как clRed.

Поскольку этот обработчик является методом формы, здесь запись Canvas обозначает то же самое, что Form1.Canvas, то есть, мы рисуем прямо на форме.

    Даже на быстродействующем компьютере работа с отдельными пикселями выполняется медленно, нужно этого избегать: рисовать с помощью линий, прямоугольников и др.

Цвет можно задать и по-другому, а формате RGB (red — красный, green — зеленый, blue —синий). Каждая из этих составляющих цвета — целое число в интервале от 0 до 255.

  Измените строчку, где записывается новый цвет: Canvas.Pixels[x,y] := RGB(0,255,255); Запустите программу и проверьте ее.

Цвет в Delphi — это целое число, занимающее 4 байта. В принципе, можно прямо записывать это число в массив Pixels, при этом удобнее всего использовать шестнадцатеричную запись, где каждая составляющая кодируется двумя шестнадцатеричными цифрами (и занимает 1 байт). Перед шестнадцатеричными числами в Паскале ставится знак $.

  Измените строчку, где записывается новый цвет: Canvas.Pixels[x,y] := $00FFFF; Запустите программу и проверьте ее.

Возможно, вы ожидали снова увидеть бирюзовый цвет (смесь зеленого с синим), а получился — желтый, то есть, смесь зеленого с красным. Дело в том, что в такой записи старший байт определяет синий цвет, следующий — зеленый и младший — красный.

Функции GetRValue, GetGValue и GetBValue позволяют выделить из цвета красную, зеленую и синюю составляющие. Все они возвращают байтовое значение.

  В начале обработчика OnClick добавьте объявление переменных var R, G, B: byte; color: TColor; В конец процедуры добавьте код, который определяет цвет пикселя (10,10), раскладывает его на составляющие и выводит их значения в окне сообщения: color := Canvas.Pixels[10,10]; R := GetRValue(color); G := GetGValue(color); B := GetBValue(color); ShowMessage('Цвет (' + IntToStr(R) + ',' + IntToStr(G)             + ',' + IntToStr(B) + ')'); Проверьте работу программы.

Переменная color, в которую сначала записывается цвет пикселя, объявлена как TColor — специальный тип данных для кодирования цвета. По сути, это целое число, но именно такое объявление более грамотно, потому что явно показывает назначение переменной.

Цвет пикселей можно получать в результате вычислений, при этом могут получиться весьма интересные узоры.

  Измените строчку, где записывается новый цвет: Canvas.Pixels[x,y] := x*y; Запустите программу, разверните окно на полный экран и щелкните по форме. После этого закройте проект.


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.