Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет мой.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.46 Mб
Скачать

Задача 31.Баннер

Программа Бегущая строка (Рис. 38) демонстрирует использование битового образа для вывода баннера в стиле бегущей строки. Битовый образ (бегущая строка) загружается из ресурса программы. Баннер "выплывает" из-за правой границы формы. В момент времени, когда баннер достигает центра окна, движение приостанавливается на несколько секунд, а затем — возобновляется.

Рис 38

Вывод: В этом задании мы создали бегущую строку.

Листинг

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

Graphics::TBitmap *banner;

int x,y;

int pause;

int xp;

TColor bc;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

banner = new Graphics::TBitmap();

banner->LoadFromResourceID((int)HInstance,101);

bc = banner->Canvas->Pixels[0][0];

x = Form1->ClientWidth;

y = 0;

xp = (Form1->ClientWidth - banner->Width) / 2;

if (xp < 0 ) xp = 0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

if ( pause > 0 )

{pause--;

return;

}

Form1->Canvas->Draw(x,y,banner);

if ( -- x == xp)

{

pause = 100;

}

if ( x < - banner->Width)

x = Form1->ClientWidth;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)

{

TColor b,p;

b = Canvas->Brush->Color; // сохранитьтекущийцветкисти

p = Canvas->Pen->Color; // сохранить текущийцвет

Canvas->Brush->Color = bc;

Canvas->Pen->Color = bc;

Canvas->Rectangle(0,0,ClientWidth,banner->Height);

Canvas->Brush->Color = b ;

Canvas->Pen->Color = p ;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormResize(TObject *Sender)

{

xp = (Form1->ClientWidth - banner->Width) / 2;

if (xp < 0 ) xp = 0;

}

Задача 32. Фоновый рисунок

Программа Фоновый рисунок (Рис. 39) демонстрирует, как можно получить фоновый рисунок путем многократного вывода битового образа на поверхность формы. Битовый образ загружается из файла, но может быть загружен и из ресурса.

Рис 39

Вывод: В этом задании мы научились создавать изображение путём многократного вывода битового образа на поверхность формы.

Листинг

// обработкасобытия OnCreate

void __fastcall TForml::FormCreate(TObject *Sender)

{

back = new Graphics::TBitmap(); // создать объект — битовый образ

// загрузить картинку

try // в процессе загрузки картинки возможны ошибки

{

Forml->back->LoadFromFile("Legal.bmp");

}

catch (EFOpenError &e)

{

return;

}

}

// формируетфоновыйрисунок

void __fastcall TForml::Background()

{

int x=0,y=0; // координатылевоговерхнегоуглабитовогообраза

if ( back->Empty) // битовый образ не был загружен

return;

do

{

do

{

Canvas->Draw(x,y,back); x += back->Width;

}

while (x < ClientWidth); x = 0;

у4= back->Height;

}

while (y < ClientHeight);

}

// обработкасобытия OnPaint

void __fastcall TForml::FormPaint(TObject *Sender)

{

Background(); // обновить фоновый рисунок

}