Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Рисование в ограниченном прямоугольникеСодержание книги
Поиск на нашем сайте
На практике бывает необходимо рисовать не на всей форме, а в ограниченном прямоугольнике. Для этого применяется компонент PaintBox, который находится в Палитре Компонентов на странице System (рис.9.15) Компонент PaintBox генерирует событие OnPaint, в ответ на которое вы можете рисовать в его области все, что угодно. Например, давайте рассмотрим рисование “звездного неба”. Шаг 1. Начинайте новый проект и сделайте новую форму окном диалога. Для этого установите свойство формы BorderStyle в значение dsDialog. Шаг 2. Поместите в нижней части формы кнопку типа BitBtn и установите ему следующий обработчик события OnPaint: procedure TForm1. PaintBox1Paint (Sender: TObject); Var I: Integer; Begin with PaintBox1 do Begin ( Использовать темно-синюю кисть для фона) Canvas. Brush. Color: = c1Navy; (Заполнить фон) Canvas. FillRect (Rect (0, 0, Width, Heiight)); (Нарисовать 200 точек в случайных местах) for I: = to 200 do Canvas. Pixels [ Random (Width), Random (Height)]: = cIWhite; end; end; После компиляции и запуска проекта вы получите форму, изображенную на рисунке (см.каталог \Chap9\Drawing\Step5 на компакт-диске). Рисование на форме (как, впрочем, и на многих других объектах) происходит через контекст устройства (холст). Этот объект появляется в виде подсказки после точки при наборе программы: К этому объекту (Canvas) мы можем припысывать разные другие объекты, в частности кисть (TBrush), перо (TPen) и шрифт (TFont). Кроме того, на холсте (Canvas) мы можем использовать картинку (TBitmap). Эти объекты будут рассмотрены подробнее в следующих уроках. Так как при рисовании нам постоянно придется использовать конструкции вида ... Form1.Canvas......то лучше эту часть вынести за скобки с помощью with: ... with Form1.Canvas dobegin... end;...Между begin и end мы как раз и будем рисовать. Куда поместь весь этот код, зависит от задачи. Можно написать его в обработчике нажатия какой-нибудь кнопки или еще где-нибудь, где вам надо. Мы же поместим его в обработчик FormPaint для нашей формы. Логично это сделать потому, что, в частности, это событие возникает и при создании формы. Кроме того, если окно нашей формы будет закрыто другим окном, а потом снова окажеться видимым, то код FormPaint также будет выполнятся, так что мы остановимся именно на этом обработчике. Давайте для начала нарисум кружок желтого цвета: procedure TForm1.FormPaint(Sender: TObject); begin with Form1.Canvas dobegin //Задаем кисть желтого цвета Brush.Color:=RGB(255, 255, 0); // Рисуем круг Ellipse(10, 10, 30, 30); end; end;Результат будет таким: Аналогичным образом можно нарисовать прямоугольник (используем Square), напечатать некой текст (TextOut) или вывести еще какие-нибудь примитивы. Для рисования линий используются методы LineTo и MoveTo. Первый из них рисует отрезок, второй - просто передвигает точку рисования. Вот пример их использования: ... //Передвигаем перо в точку (10, 10) Form1.Canvas.MoveTo(10, 10); //Рисуем три линии Form1.Canvas.LineTo(30, 70); Form1.Canvas.LineTo(80, 40); Form1.Canvas.LineTo(10, 10);...А вот результат выполнения этого фрагмента: Тот же результат можно получить и через метод Polygon. Он в качестве параметра берет массив точек (вершин): var points: Array [1..3] of TPoint;... points[1].X:=10; points[1].Y:=10; points[2].X:=30; points[2].Y:=70; points[3].X:=80; points[3].Y:=40; Form1.Canvas.Polygon(points);...В приведеном примере треугольник не закрашивается. Для его закраски (а также любой фигуры) используется метод FloodFill. Он закрашивает область текущей кистью, начиная с точки, передаваемой в него в качестве параметра. ... //Берем кисть красного цвета Form1.Canvas.Brush.Color:=RGB(255, 0, 0); // Закрашиваем Form1.Canvas.FloodFill(12, 12, RGB(0, 0, 0), fsBorder);...Если последний параметр равен fsBorder, то заполнение цветом идет до тех пор, пока наша волна закраски не упрется в границу, заданную вторым параметром. Если же он равен fsSurface, то закрашиваться будут именно точки с цветом, задаваемым вторым параметром (начиная от точки, определяемой первыми двумя параметрами). А вот и результат нашей закраски: Кроме линий, можно выводить и отдельные точки. Вот пример: ... //Выводим точку красного цвета Form1.Canvas.Pixels[9, 9]:=RGB(255, 0, 0);...Вообще говоря, рисовать можно не только на форме.
|
||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 202; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.66.224 (0.005 с.) |