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

Задача 27. Просмотр иллюстраций.

Программа Просмотр иллюстраций (Рис. 34) позволяет просмотреть файлы формата JPEG, например — фотографии. Выбор рабочей папки (каталога) выполняется в стандартном окне Выбор папки. Иллюстрации можно просматривать по кадрам или в режиме слайд-шоу.

Рис 34

Вывод:

Листинг

#include <FileCtrl.hpp> // для доступа к SelectDirectory tinclude <jpeg.hpp> // обеспечивает работу с // иллюстрациями в формате JPEG

AnsiString aPath; // каталог, в котором находится // иллюстрация TSearchRec aSearchRec; // рез-т поиска файла

102 Часть 1. Примерыизадачи

void fastcall TForml::FormCreate(TObject *Sender)

aPath = ""; // текущий каталог - каталог, из которого // запущена программа FirstPicture(); // показать картинку, которая есть в // каталоге программы

// щелчокнакнопкеКаталог void fastcall TForml::ButtonlClick(TObject *Sender)

if (SelectDirectory("Выберите каталог, в котором" " находятся иллюстрации", "", aPath) ! = О

// пользователь выбрал каталог и щелкнул на ОК aPath = aPath + " \ \"; if ( FirstPicture() ) // вывести иллюстрацию CheckBoxl->Enabled = true; else Labell->Caption = "В каталоге " + aPath + " нет jpg-иллюстраций." ;

// вывести первую картинку и найти следующую bool fastcall TForml::FirstPicture() { Imagel->Visible •- false; // скрыть компонент Imagel Button2->Enabled = false; // кнопка Дальше недоступна CheckBoxl->Enabled = false; CheckBoxl->Checked = false; Labell->Caption = if (FindFirst(aPath+ "*.jpg", faAnyFile, aSearchRec) == 0)

Imagel->Picture->LoadFromFile(aPath+aSearchRec.Name);

Графика 103

Imagel->Visible = true; Labell->Caption = aPath + aSearchRec.Name; if ( FindNext(aSearchRec) == 0 ) // найтислед. ил.

// иллюстрацияесть Button2->Enabled = true; // теперькнопкаДальше // доступна CheckBoxl->Enabled = true; return true;

}

} return false;

// вывеститекущуюинайтиследующуюкартинку bool fastcall TForml::NextPicture()

Imagel->Picture->LoadFromFile(aPath+aSearchRec.Name); Labell->Caption = aPath + aSearchRec.Name; if ( FindNext(aSearchRec) != 0 ) // найтислед. // иллюстрацию

// иллюстрацийбольшенет Button2->Enabled = false; // теперькнопкаДальше // недоступна CheekBoxl->Enabled = false; return false;

return true;

// щелчокнакнопкеДальше void fastcall TForml::Button2Click(TObject *Sender)

104 Часть 1. Примеры и задачи

NextPicture();

// щелчок на переключателе "непрерывно" void fastcall TForml::CheckBoxlClick(TObject *Sender)

{

if ( CheckBoxl->Checked) Timerl->Enabled = true; // слайд-шоу else Timerl->Enabled = false; // покадрам

// Сигналоттаймера - вывестиследующуюиллюстрацию void fastcall TForml::TimerlTimer(TObject *Sender) { if ( ! NextPicture()) Timerl->Enabled = false;

Задача 28 .Часы

В окне программы Часы (рис. 35) находится изображение идущих часов, которые показывают текущее время.

Рис 35

Вывод: Мы научились создавать часы которые соответствуют времени на компьютере путём написания кода и использования компонента Timer.

Листинг

#include <vcl.h>

#pragma hdrstop

#include "DateUtils.hpp"

#include "math.h"

#define R 75

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int x0, y0;

int ahr,amin,asec;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

TDateTime t;

ClientHeight = (R + 30)*2;

ClientWidth = (R + 30)*2;

x0 = R + 30;

y0 = R + 30;

t = Now();

ahr = 90 - HourOf(t)*30-(MinuteOf(Today() ) / 12) *6;

amin = 90 - MinuteOf(t)*6;

asec = 90 - SecondOf( Today() )*6;

Timer1->Interval = 1000;

Timer1->Enabled = true;

}

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

__fastcall TForm1::Vector (int x0, int y0, int a, int l)

{

#define TORAD 0.0174532

int x, y;

Canvas->MoveTo(x0,y0);

x = x0 + l * cos(a*TORAD);

y = y0 - l * sin(a*TORAD);

Canvas->LineTo(x,y);

}

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

void __fastcall TForm1::FormPaint(TObject *Sender)

{

int x, y;

int a;

int h;

TBrushStyle bs;

TColor pc;

int pw;

bs = Canvas->Brush->Style;

pc = Canvas->Pen->Color;

pw = Canvas->Pen->Width;

Canvas->Brush->Style = bsClear;

Canvas->Pen->Width = 1;

Canvas->Pen->Color = clBlack;

a = 0;

h = 3;

while ( a < 360 )

{

x = x0 + R * cos(a * TORAD);

y = y0 - R * sin(a * TORAD);

Form1->Canvas->MoveTo(x,y);

if ( (a % 30) == 0 )

{

Canvas->Ellipse(x-2,y-2,x+3,y+3);

x = x0 + (R+15) * cos(a * TORAD);

y = x0 - (R+15) * sin(a * TORAD);

Canvas->TextOut(x-5,y-7,IntToStr(h));

h--;

if ( h == 0 ) h = 12;

}

else

Canvas->Ellipse (x-1, y-1, x+1, y+1) ;

a = a + 6;

}

Canvas->Brush->Style = bs;

Canvas->Pen->Width = pw;

Canvas->Pen->Color = pc;

TDateTime t;

Canvas->Pen->Color = clBtnFace;

Canvas->Pen->Width = 3;

Vector(x0,y0, ahr, R-20);

Vector(x0,y0, amin, R-15);

Vector(x0,y0, asec, R-7);

t = Now();

ahr = 90 - HourOf(t)*30-(MinuteOf(t)% 12)*6;

amin = 90 - MinuteOf(t)*6;

asec = 90 - SecondOf(t)*6;

Canvas->Pen->Width = 2;

Canvas->Pen->Color = clBlack;

Vector(x0,y0, ahr, R-20);

Canvas->Pen->Width = 3 ;

Canvas->Pen->Color = clBlack;

Vector(x0,y0, amin, R-15);

Canvas->Pen->Width = 1;

Canvas->Pen->Color = clYellow;

Vector(x0,y0, asec, R-7);

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

TDateTime t;

Canvas->Pen->Color = clBtnFace;

Canvas->Pen->Width = 3;

Vector(x0,y0, ahr, R-20);

Vector(x0,y0, amin, R-15);

Vector(x0,y0, asec, R-7);

t = Now();

ahr = 90 - HourOf(t)*30-(MinuteOf(t)% 12)*6;

amin = 90 - MinuteOf(t)*6;

asec = 90 - SecondOf(t)*6;

Canvas->Pen->Width = 2;

Canvas->Pen->Color = clBlack;

Vector(x0,y0, ahr, R-20);

Canvas->Pen->Width = 3 ;

Canvas->Pen->Color = clBlack;

Vector(x0,y0, amin, R-15);

Canvas->Pen->Width = 1;

Canvas->Pen->Color = clYellow;

Vector(x0,y0, asec, R-7);

}

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