Среда, 24.04.2024, 07:56
Блог учителя информатики и математики
О блогеМой профильРегистрацияВыходВход
Вы вошли как Гость · Группа "Гости" Приветствую Вас, Гость · RSS
Меню блога
Погода в нашем районе.

НАГРАДА

Как Вы считаете, должны ли дети ходить в школу в школьной форме?
Всего ответов: 2806
 
 Блог учителя
Главная » Статьи » Информатика » В помощь ученику

Графика (14 урок).

Графика

 При работе с экраном в графическом режиме очень важным является то, что любая информация представляет собой совокупность пикселей. Каждый пиксель определяется своими координатами, т.е. положением относительно левого верхнего угла экрана. С помощью программ можно управлять светимостью и цветом любого пикселя, т.е. создавать любое изображение.

Графический режим ПК существенно отличается от текстового как по принципам функционирования, так и по возможностям.
Графика применяется практически во всех серьезных программных разработках, так как позволяет увидеть результаты расчетов в виде чертежей, графиков, иллюстраций в движении.
Подключение графической библиотеки при программировании
в среде Turbo Pascal  производится оператором: Uses Graph

Изображения в PascalABC  можно создавать с помощью модуля GraphABC, он подключается  тоже после Uses .

Uses GraphABC;

Begin

End.

Уже сейчас можно запустить приложение и получить на экране графическое окно.

По умолчанию оно имеет размеры 640х480 пикселей и заголовок GraphABC.NET.

 

Операторы используемые в графике:

SetWindowHeight(h); - Устанавливает высоту графического окна
SetWindowWidth(w); - Устанавливает ширину графического окна
ClearWindow; - очищает графическое окно белым цветом.
ClearWindow(color); - очищает графическое окно указанным цветом.
SetPixel(x,y,color); - Закрашивает один пиксел с координатами (x,y) цветом color
LineTo(x,y); - рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
Line(x1,y1,x2,y2); - рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
SetPenColor(color); - устанавливает цвет пера, задаваемый параметром color.

 

Некоторые из цветов:

clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый

 

clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый

 

clSilver – серебряный

 Цвет также можно задать с помощью палитры RGB для это за место color пишется rgb(r,g,b): где r,b,g - числа от 0 до 255


SetPenWidth(n); - устанавливает ширину (толщину) пера, равную n пикселям.
Rectangle(x1,y1,x2,y2); - рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
 

 


FloodFill(x,y,color); - заливает область одного цвета цветом color, начиная с точки (x,y).
SetBrushColor(color); - устанавливает цвет кисти, заливка кистью распространяется на замкнутый контур, описание которого следует за процедурой установки цвета кисти.
Circle(x,y,r); - рисует окружность с центром в точке (x,y) и радиусом r.
Ellipse(x1,y1,x2,y2); - рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).

SetFontName(‘name’);- устанавливает наименование шрифта.
SetFontColor(color); - устанавливает цвет шрифта.
SetFontSize(sz); - устанавливает  размер шрифта в пунктах.
SetFontStyle(fs); - устанавливает  стиль шрифта.
Стиль шрифта:

fsNormal – обычный;
fsBold – жирный;
fsItalic – наклонный;
fsBoldItalic – жирный наклонный;
fsUnderline – подчеркнутый;
fsBoldUnderline – жирный подчеркнутый;
fsItalicUnderline – наклонный подчеркнутый;
fsBoldItalicUnderline – жирный наклонный подчеркнутый.

 

Задача: нарисовать

 

Программа:

Program Seventh;
uses GraphABC;
Begin
MoveTo(200,200);
LineTO (300,140); lineTO (400,200);
LineTO (300,260); lineTO (200,200);
LineTo (400,200);
circle (160,200,40);
circle (440,200,40);
circle (440,200,40);
FloodFill (300,160,cllime);
FloodFill (300,230,clblue);
FloodFill (160,200,clred);
FloodFill (440,200,clyellow);
End.

 

                                                         Процедура

Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.
Применение:
 - выполнение одинаковых действий в разных местах программы
 - разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия


procedure <имя процедуры>(<формальные параметры>:integer);
begin
<тело процедуры>
end;
 


Порядок разработки процедуры:
 - выделить одинаковые или похожие действия
 - найти в них общее (размеры, форма, угол поворота) и отличия
 - отличия записать в виде неизвестных переменных, они будут параметрами процедуры
 


Особенности:
 - все процедуры расположены выше основной программы
 - в заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут меняться
 - при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке
 - для каждого формального параметра после двоеточия указывают его тип
 - если однотипные параметры стоят рядом, их перечисляют через запятую
 - внутри процедуры параметры используются так же, как и переменные
 - в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к ним доступа
 

 

Задача нарисовать:

 

 

Программа:

Program Eighth;
uses crt,graphABC;
Procedure Tr(x,y,r,g,b:integer);
begin
MoveTo(x,y);
LineTo(x-50,y-86);
LineTo(x+50,y-86);
LineTo(x,y);
FloodFill(x,y-5,RGB(r,g,b));
end;
Begin
Tr (100,100,0,0,255);
Tr (200,100,255,0,0);
Tr (150,186,0,255,0);
End.
 

                                                      Рекурсия

 

Рекурсивный объект – это объект, определяемый через один или несколько таких же объектов.
 

Примеры:

Дерево Пифагора из N уровней – это ствол и отходящие от него симметрично два дерева Пифагора из N-1 уровней, такие что длина их стволов в 2 раза меньше и угол между ними равен 90.

 

Это дерево Пифагора из 6 уровней:

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

 

Рекурсивная процедура - это процедура вызывающая сама себя.

Задачи: Построить 

Программа:

program qq;
uses GraphABC;
procedure Pifagor(x0, y0, a, L: real;
N: integer);
const k = 0.6;
var x1, y1: real;
begin
if N > 0 then begin
x1 := x0 + L*cos(a);
y1 := y0 - L*sin(a);
Line (round(x0), round(y0),round(x1), round(y1));
Pifagor (x1, y1, a+pi/3, L*k, N-1);
Pifagor (x1, y1, a+3*pi/30, L*k, N-1);
Pifagor (x1, y1, a-3*pi/30, L*k, N-1);
Pifagor (x1, y1, a-pi/3, L*k, N-1);
end;
end;
begin
Pifagor (250, 400, pi/2, 150,6);
end.
 

Но если немного изменить программу:

program qq;
uses GraphABC;
procedure Pifagor(x0, y0, a, L: real;
N: integer);
const k = 0.6;
var x1, y1: real;
begin
if N > 0 then begin
x1 := x0 + L*cos(a);
y1 := y0 - L*sin(a);
Line (round(x0), round(y0),round(x1), round(y1));

SetPenColor (clbrown);
Pifagor (x1, y1, a+pi/3, L*k, N-1);

SetPenColor (clyellow);
Pifagor (x1, y1, a+3*pi/30, L*k, N-1);

SetPenColor (clred);
Pifagor (x1, y1, a-3*pi/30, L*k, N-1);

SetPenColor (clgreen);
Pifagor (x1, y1, a-pi/3, L*k, N-1);
end;
end;
begin
Pifagor (250, 400, pi/2, 150,10);
end.

 

Hу как? Такая прелесть получилась так просто.

 

ДЗ, З а д а н и е :

Нарисовать 5000 звѐзд  на небе.

 (точки со случайными координатами)

 

Категория: В помощь ученику | Добавил: Harchev (29.11.2013)
Просмотров: 4486 | Комментарии: 13 | Рейтинг: 3.9/41
Всего комментариев: 7
1 Лавриненко Михаил  
Program Zvezdnoenebo;

uses Graphabc;
Var
x,y,z,k:integer;
begin
ClearWindow (clAqua);
putpixel(100,200,clWhite);
putpixel(150,130,clWhite);
putpixel(230,130,clWhite);
putpixel(270,120,clWhite);
putpixel(360,80,clWhite);
putpixel(370,190,clWhite);
putpixel(320,200,clWhite);

Randomize;
For k:=1 to 5000 do
Begin

x:=random(640);
y:=random(480);
z:=random(15);
putpixel(x,y,z);
end;

End.

2 Настя  
uses GraphABC;
var x, y, a:integer;
begin
ClearWindow (clBlack);
for a:=1 to 5000 do
begin
x:=random(640);
y:=random(480);
SetPixel(x,y,clWhite);
end;
end.

3 Настя  
uses GraphABC;
var x, y, a:integer;
begin
SetWindowHeight(500);
SetWindowWidth(1000);
ClearWindow (clBlack);
for a:=1 to 5000 do
begin
x:=random(1111);
y:=random(1324);
SetPixel(x,y,clWhite);
end;
end.

4 Анастасия Степаненко  
uses GraphABC;
var x, i, n:integer;
begin
SetWindowHeight(600);
SetWindowWidth(5000);
ClearWindow (clBlack);
for n:=1 to 5000 do
begin
x:=random(1111);
i:=random(1324);
SetPixel(x,i,clWhite);
end;
end.

5 Катерина  
uses GraphABC;
var x, y, k:integer;
begin
SetWindowHeight(1000);
SetWindowWidth(1000);
ClearWindow (clBlack);
for k:=1 to 5000 do
begin
x:=random(1000);
y:=random(1000);
SetPixel(x,y,clSilver);
end;
end.

6 Анна  
program zvezdnoenebo;
uses GraphABC;
var x, y, a:integer;
begin
SetWindowHeight(500);
SetWindowWidth(1000);
ClearWindow (clBlack);
for a:=1 to 5000 do
begin
x:=random(1100);
y:=random(558);
SetPixel(x,y,clWhite);
end;
end.

7 Маргарита  
Program StarSky;
uses GraphABC;
var i, x, y:integer;
begin
SetWindowWidth(700);
SetWindowHeight(700);
ClearWindow (clBlack);
Randomize;
for i:=1 to 5000 do
begin
x:=random(700);
y:=random(700);
SetPixel(x,y,clYellow);
end;
end.

Имя *:
Email *:
Код *:
Copyright MyCorp © 2024
Блог учителя Учительский портал