СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Элементы управления для работы с графикой

Категория: Информатика

Нажмите, чтобы узнать подробности

В архиве находится план урока и проактическая работа с кодом для учителя

Просмотр содержимого документа
«Практика_5_PascalABCNET»

Практика_5

Задание 1.

    1. Создать новое приложение (форму).

Задать:

  • Имя проекта – Работа с графикой.

  • Размер формы – 700; 500

  • Расположение на экране монитора – 250; 250

    1. Добавить на форму две метки label1, и label2. Изменить свойства шрифта для этих компонентов так, чтобы текст хорошо читался, цвет текста – черный.

    2. Добавить на форму кнопку. Указать для неё следующие свойства:

      свойство

      значение

      Fontr

      Arial, обычный, 12

    3. Добавить на форму два поля TextBox (Edit). Изменить размер и свойства шрифта для этих компонентов так, чтобы текст хорошо читался, цвет текста – черный.

Сохраните проект.

Задание 2. Разместить фоновое изображение на форме, использовать файл fon.jpg (не забудьте скопировать файл в папку проекта). Поместить на форму компонент PictureBox и загрузить в него изображение, использовать файл z5_2.jpg (не забудьте скопировать файл в папку проекта).

Сохраните проект.

Задание 3. Изменить проект, созданный ранее, для построения графика функции y = x*sin(x) на промежутке, заданном пользователем.

Создать обработчик события Click для кнопки button1 и строить в нем график функции по точкам:

var x, y, h, k, x0, xn:real;

x1, y1, n, c_x, c_y:integer;

gr:Graphics;

bm:Bitmap;

p_c:Pen;

  1. Нарисовать оси координат в виде двух перпендикулярных линий, пересекающихся в центре компонента PictureBox.

//подготовка графической области для рисования по пикселям

bm:=new Bitmap(PictureBox1.Width,Picturebox1.Height);

pictureBox1.Image:=(Image)(bm);

gr:=Graphics.FromImage(pictureBox1.Image);

//закраска графической области белым цветом

gr.Clear(Color.White);

//центр области построения

c_x:=PictureBox1.Width div 2;

c_y:=PictureBox1.Height div 2;

//оси

p_c:=new Pen(Color.Black,1);

gr.DrawLine(p_c, 0, c_y, 2*c_x, c_y);

gr.DrawLine(p_c, c_x, 0, c_x, 2*c_y);

  1. Чтобы получить видимость сплошной линии, количество точек, которые образуют график функции, должно быть не менее 10 000 (n = 10 000).

//количество точек

n:=10000;

  1. Крайние границы промежутка, которые пользователь ввёл в TextBox1 и TextBox2, необходимо преобразовать из строковой переменной в числовую – вещественную (Float):

//концы промежутка

x0:=StrToFloat(TextBox1.Text);

xn:=StrToFloat(TextBox2.Text);

  1. При построении нужно учитывать масштаб: ширина компонента PictureBox должна соответствовать длине заданного промежутка. Тогда масштабный коэффициент можно рассчитать по формуле k=PictureBox1.Wight/(xn-x0)

//масштабный коэффициент

k:=PictureBox1.Width/(xn-x0);

  1. Шаг изменения значения x определяется как h=(xn-x0)/n

//шаг

h:=(xn-x0)/n;

x:=x0;

  1. Сам график функции будем «рисовать» в цикле:

for var i:=1 to n do

begin

y:=x*sin(x);

end;

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

x1:=trunc(x*k)+c_x;

y1:=trunc(-y*k)+c_y;

  1. Некоторые точки графика при построении могут оказаться за пределами графической области, поэтому необходима проверка значения y1: значение должно быть неотрицательным и меньше высоты графической области.

//проверка попадания точки в графическую область

if (y1=0) and (y12*c_y) then

bm.SetPixel(x1,y1,Color.Blue);

x:=x+h;

Сохраните проект.















З адание 4. Самостоятельно добавьте в проект график функции y=0,3x2 – 4x+2 в той же системе координат красным цветом.

Сохраните проект.













З адание 5. Создать проект и построить гистограмму по данным температуры воздуха в течение недели, которые хранятся в массиве. Описать массив с константными данными.

  1. Поместить на форму компоненты: PictureBox и Button1.

  2. Изменить свойства Text у компонента Button1 на «Диаграмма с данными».

  3. Написать обработчик события Click для компонента Button1, в котором диаграмма строится с помощью прямоугольников.

const a: array[1..7] of integer = (10, 14, 16, 12, 7, 10, 8);

n = 7;

var max, x, y1, y2, h, i, cr, cg,

cb : integer;

m : real;

gr : Graphics;

rnd : Random;

sb : SolidBrush;

  1. Найти максимальный элемент в массиве max.

max := a[1];

for i := 2 to n do

if a[i] max then

max := a[i];

  1. Рассчитать масштабный коэффициент:

m := PictureBox1.Height / max;

  1. Подготовка графической области для рисования:

gr := PictureBox1.CreateGraphics;

gr.Clear(Color.White);

rnd := new Random();

  1. Ширина прямоугольника: h := trunc(PictureBox1.Width/(2*n+1));

  2. В цикле строить n прямоугольников одинаковой ширины.

x := h;

for i := 1 to n do

begin

cr := rnd.next(256);

cg := rnd.next(256);

cb := rnd.next(256);

sb := new SolidBrush(Color.FromArgb(cr,cg,cb));

y1 := PictureBox1.Height - 1;

y2 := y1 - trunc(a[i] * m)- 1;

gr.FillRectangle(sb, x, y2, h, y1);

x := x + 2 * h;

end;












Задание 6. Самостоятельно измените проект из примера 4.6 так, чтобы строилась линейчатая диаграмма (столбики расположены горизонтально).


Код для преподавателя:

procedure Form1.button1_Click(sender: Object; e: EventArgs);

const a: array[1..7] of integer = (10, 14, 16, 12, 7, 10, 8);

n = 7;

var max, y, x1, x2, h, i, cr, cg, cb : integer;

m : real;

gr : Graphics;

rnd : Random;

sb : SolidBrush;

begin

max := a[1];

for i := 2 to n do

if a[i] max then

max := a[i];

h := trunc(PictureBox1.Height/(2*n+1));

m := PictureBox1.Width / max;

y := h;

//подготовка графической области для рисования примитивов

gr := PictureBox1.CreateGraphics;

gr.Clear(Color.White);

rnd := new Random();

for i := 1 to n do

begin

cr := rnd.next(256);

cg := rnd.next(256);

cb := rnd.next(256);

sb := new SolidBrush(Color.FromArgb(cr,cg,cb));

x1 := PictureBox1.Width ;

x2 := x1 - trunc(a[i] * m)- 1;

gr.FillRectangle(sb,x2,y,x1,h);

y := y + 2 * h;

end;

end;

end.

Просмотр содержимого документа
«план урока_5»