Автор работы: Пользователь скрыл имя, 17 Марта 2013 в 21:30, курсовая работа
Создание иерархии классов для реализации свойств и методов объектов точка, окружность, прямая, прямоугольник, закрашенная область из предметной области «Графические объекты». В основной программе продемонстрирована работа методов: перемещение, наложение, масштабирование.
Задание …………………………………………………………..……3
Введение……………………………………………………………….4
Разработка структуры классов………………………………..5
Реализация классов в программе ………………………….….8
Работа программы…………………………………………..….15
Приложение(Основная программа)…………………………...18
Системные требования................................................................23
Заключение……………………………………………………………..24
Список литературы…………………………………………………....25
0, 0,
BitMap->Width, BitMap->Height,
BitMap->Canvas->Handle,
0, 0,
SRCCOPY//Исходное изображение копируется в контекст отображения
);
}
if (RBegin && ! REnd) REnd = true;
RBegin = false;
RDrag = false;
}
private:
int X0, Y0;
bool RBegin, REnd, RDrag;
TRect R,R0;
Graphics::TBitmap *Bit;
};
Работа программы
При запуске пользователю необходимо
задать размеры нового листа. После
нажатия клавиши применить
Перед началом использования методов и компонентов редактора можно прочитать подробную справку о каждом из них.
Рисование осуществляется нажатием левой кнопки мыши. В пункте меню «Файл» можно выбрать создание нового рисунка, сохранения существующего, открытия уже имеющегося рисунка. Пункт меню «Вид» отвечает за внешний вид редактора, там мы можем добавить или удалить панели редактора.
Выбор цвета осуществляется из палитры цветов ,если в палитре нет нужного нам цвета мы можем воспользоваться определителем цветов.
Основная программа
TFmain *Fmain;
bool f_panel1 = false;//панель инструментов
bool f_panel2 = false;//панель цветов
RGB(Red, Green, Blue) получает из значений тpех основных цветов от 0 до 255 значение цвета RGB, связанное с палитpой.
// Счетчик наследников есть только в родительской форме.
__fastcall TFmain::TFmain(TComponent* Owner)
: TForm(Owner)
{
AllColor = 28;
color.resize(AllColor);
fstream File;
File.open("ss.txt");//цвета
for(int i = 0; i < AllColor; i++)
{
int R, G, B;
File >> R;
File >> G;
File >> B;
color[i].push_back(R);
color[i].push_back(G);
color[i].push_back(B);
}
File.close();
Palette_selected_col = 0;
Palette_selected_row = 0;
}
//отпускание перетаскиваемого
компонента над данным
void __fastcall TFmain::FormDockDrop(TObject *Sender,//объект,над которым объект был опущен
TDragDockObject *Source, int X, int Y)//перетаскиваемый объект
//X и Y содержат координаты позиции курсора мыши над компонентом
{
Panel1->Align = alLeft;//положение панели инструментов
Panel2->Align = alBottom;//положение панели цвета
}
// время,в течение которого перемещаем перетаскиваемый объект над компонентом
void __fastcall TFmain::FormDockOver(TObject *Sender,//Sender-сам компонент
TDragDockObject *Source, int X, int Y, TDragState State,//Source-перетаскиваемый объект
bool &Accept)//State определяет состояние перетаскиваемого объекта по отношению к другим объектам
{ //X и Y - координаты точки эрана в пикселях
int x = ClientOrigin.x;
int y = ClientOrigin.y;
if(Source->DockRect.Left <= x && Source->Control == Panel1)
Source->DockRect
= Rect(x, y, x+Panel1->Width, y+ClientHeight-Panel2->Height-
if(Source->DockRect.Bottom >= y+ClientHeight && Source->Control == Panel2)
Source->DockRect
= Rect(x, y+ClientHeight-Panel2->Height-
}
Передаём по ссылке параметр InfluenceRect типа TRect.Переменная типа TRect
указывает место в форме,где будет активизировано закрепление элемента управления
при его размещении над этим местом.Указание области закрепления одних элементов
управления на других.
void __fastcall TFmain::FormGetSiteInfo(
TControl *DockClient, TRect &InfluenceRect, TPoint &MousePos,
bool &CanDock)
{
if(DockClient == Panel1)
{
Panel1->Constraints->MaxHeight = 70;
Panel1->Constraints->MaxWidth = 49;
if(MousePos.x > ClientOrigin.x)
CanDock = DockClient != Panel1;
else CanDock = DockClient == Panel1;
}
else
{
Panel2->Constraints->MaxHeight = 42;
Panel2->Constraints->MaxWidth = 477;
if(MousePos.y < ClientOrigin.y+ClientHeight)
CanDock = DockClient != Panel2;
else CanDock = DockClient == Panel2;
}
}
void __fastcall TFmain::PaletteDrawCell(
int ARow, TRect &Rect, TGridDrawState State)
{
Graphics::TBitmap *b = new Graphics::TBitmap;
b->Canvas->Pen->Color = clWindow;
b->Canvas->Brush->Color = (TColor)RGB(color[ACol+Fmain->
b->Width = 500;
b->Height = 500;
b->Canvas->FillRect(TRect(0, 0, 50, 50));
Palette->Canvas->CopyRect(
b->Free();
}
//----------------------------
void __fastcall TFmain::BColorClick(TObject *Sender)
{
if(Fmain->ColorDialog1->
{// 12 - это формальные параметры
FrontColor->Canvas->Brush->
FrontColor->Canvas->FillRect(
// Для дидильной палитре на дроугриде.(4 строки)
Fmain->color[Fmain->Palette_
Fmain->color[Fmain->Palette_
Fmain->color[Fmain->Palette_
Palette->Canvas->CopyRect(
}
}
Процедура используемая фигурами для установки толщины кисти и цвета.
void __fastcall TFmain::SBPenMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(!Shift.Contains(ssLeft))// если нажата правая кнопка
{
cv->Visible = true;//свойства (установка размера кисти, выбор цвета)
cv->Panel1->Color
= FrontColor->Canvas->Brush->
}
}
Процедура установки размера холста.
void __fastcall TFmain::FNewClick(TObject *Sender)
{
TF = new TFdoc(Application);
if (!TF) return;
TF->BitMap = new Graphics::TBitmap;
TF->Caption = "Документ " + IntToStr(MDIChildCount);
FNewList->ShowModal();//
// Устанавливаем размеры холста и битмапа
TF->PaintBox1->Width = StrToInt(FNewList->CSpinEdit1-
TF->PaintBox1->Height = StrToInt(FNewList->CSpinEdit2-
TF->BitMap->Width = StrToInt(FNewList->CSpinEdit1-
TF->BitMap->Height = StrToInt(FNewList->CSpinEdit2-
// Заливаем холст
TF->BitMap->PixelFormat = pf24bit;
TF->PaintBox1->Canvas->Brush->
TF->PaintBox1->Canvas->
// задаем размеры формы
TF->Width = StrToInt(FNewList->CSpinEdit1-
TF->Height = StrToInt(FNewList->CSpinEdit2-
}
Процедура вызова справки
void __fastcall TFmain::N4Click(TObject *Sender)
{
ShellExecute(Handle,"open","
Системные требования
Заключение
Список литературы
Интернет ресурсы:
и др.