|
Практическая работа №3
Тема: Разработка программ, которые создают и обрабатывают графические изображения.
Цель: Научиться создавать и отлаживать простые программы с графическим интерфейсом пользователя в среде С ++ Builder с помощью библиотеки классов VCL.
Количество часов: 18
Оборудование: ИВМ-совместимый компьютер.
Программное обеспечение: ОС Windows, интегрированную среду программирования на языке С / С ++.
Задача: Разработать программу «Калькулятор» с графическим окном интерфейсом.
Разработать графический растровый редактор, который должен выполнять следующее:
1) Открывать и хранить графические изображения в формате bmp;
2) Реализовать инструменты рисования: «карандаш», «кисточка», «ластик», «линия», «прямоугольник», «выбор цвета» и «круг»;
3) Иметь палитру цветов для инструментов;
4) Реализовать функцию очистки рисунка;
5) Содержать главное меню и окно «О программе»
Содержание отчета:
1.Порядок выполнения работы.
2.Скрин-шоты программы.
3.Перечень компонентов, их свойства, события и методы, которые использовались.
4.Исходящий код программы.
Выводы.
Unit1.cpp
int W=1;
//Width- ширина
int SX,SY;
//StartX,StartY
char Tool='P';
//Pen-кисть,Line-линия,Circle-круг,Square-квадрат,Eraser-ластик, Brush-кисть
bool MD=0,MU=0;
//MouseDown-ЛКМ нажата,MouseUp- ЛКМ отжата
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form1->Color=clWhite;//Цвет холста,по умолчанию - белый
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
//Установка начальной точки
MD=true;
MU=false;
Canvas->MoveTo(X,Y);
SX=X;
SY=Y;
//Установка выбранного цвета и ширины
this->Canvas->Pen->Color=CColorGrid1->ForegroundColor;
this->Canvas->Pen->Width=W;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
if(MD==true)
{
if(Tool=='P')
{
Canvas->Pen->Width=1;
Canvas->LineTo(X,Y);
}
if(Tool=='B')//Если выбрана кисть рисовать выбранным цветом и шириной
Canvas->LineTo(X,Y);
if(Tool=='E')//Если выбран ластик рисовать белым цветом и шириной в 10 пикселей
{
Canvas->Pen->Color=RGB(255,255,255);
Canvas->Pen->Width=10;
Canvas->LineTo(X,Y);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
MU=true;
MD=false;
switch(Tool)
{
case 'L'://Линия
Canvas->LineTo(X,Y);
break;
case 'C'://Круг
Canvas->Ellipse(SX,SY,X,Y);
break;
case 'S'://прямоугольник
Canvas->Rectangle(SX,SY,X,Y);
break;
}
}
//---------------------------------------------------------------------------
//Если нажата кнопка выбрать соотвецтвующий инструмент
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Tool='B';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Tool='L';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Tool='C';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Tool='S';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Tool='E';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
Tool='P';
}
//---------------------------------------------------------------------------
//Кнопки регулирования ширины
void __fastcall TForm1::Button6Click(TObject *Sender)
{
W--;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
W++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N7Click(TObject *Sender)
{
//Очистка холста
//Если включенна прозрачность,выключить её,нарисовать на весь холст белый прямоугольник
//и обратно включить прозрачность
if(Canvas->Brush->Style==bsClear)
{
Canvas->Brush->Style=bsSolid;
Canvas->FillRect(Rect(0,0,Form1->ClientWidth,Form1->ClientHeight));
Canvas->Brush->Style=bsClear;
}
//Иначе просто нарисовать белый прямоугольник
else
Canvas->FillRect(Rect(0,0,Form1->ClientWidth,Form1->ClientHeight));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
//Загрузка картинки
Graphics::TBitmap *BMP=new Graphics::TBitmap;
if(OpenDialog1->Execute())
{
BMP->LoadFromFile(OpenDialog1->FileName);
Canvas->Draw(120,0,BMP);
delete BMP;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
//Завершение программмы
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
//Сохранение картинки
Graphics::TBitmap *BMP=new Graphics::TBitmap;
if(SaveDialog1->Execute())
{
BMP->SaveToFile(SaveDialog1->FileName);
delete BMP;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
//Включить прозрачность
Canvas->Brush->Style=bsClear;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
//Выключить прозрачность
Canvas->Brush->Style=bsSolid;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N9Click(TObject *Sender)
{
ShowMessage("Программа созданна студентами группы РПЗ-xx\xx xxxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxx");
}
//---------------------------------------------------------------------------
Вывод: Научилась создавать и отлаживать простые программы с графическим интерфейсом пользователя в среде С ++ Builder с помощью библиотеки классов VCL.
Дата добавления: 2015-09-29; просмотров: 24 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Настоящий трудовой договор (далее договор) заключен между Работодателем: Акционерным Обществом Совместное Казахско-Турецкое предприятие «Отель Астана», свидетельство о государственной | | | №4 С.Сейфуллин атындағы орта мектеп |