- •Практична робота № 5 Створення найпростішого графічного режактору.
- •Хід роботи:
- •1.1 Встановлення прапорців.
- •2.2 Створення меню і кнопок панелі інструментів.
- •2.3 Зв’язування прапорців з засобами користувацького інтерфейсу.
- •2.4 Помітка команд меню.
- •1.5 Обробка повідомлення про натиснення кнопки миші.
- •1.6 Малювання ліній.
- •1.7 Малювання прямокутників.
- •1.8 Малювання еліпсів.
- •1.9 Замальовування фігур.
- •Завдання на практичну роботу:
Практична робота № 5 Створення найпростішого графічного режактору.
Мета роботи: навчитися створювати додатки найпростішого графічного редактору з підтримкою миші та панеллю інструментів.
Хід роботи:
В даній практичній роботі буде створений додаток для малювання основних графічних фігур. Програма буде складатися з двох основних частин: перша відповідає за взаємодію з користувачем, а друга – за графічні операції. Великі програми слід ділити на якомога менші компоненти. Для простоти перша частина буде працювати з командами меню, кнопками на панелі інструментів і повідомленнями від миші, а друга – малювати у вікні.
Якщо користувач обирає команду меню, натискує кнопку на панелі або працює з мишею, необхідно встановити відповідний прапорець. В другій частині програми залишається лише перевірити значення прапорців і визначити, що потрібно робити.
Наприклад якщо користувач обирає з меню команду малювання лінії або натискає відповідну кнопку на панелі інструментів прапору bLineFlag присвоюється значення true. Якщо тепер користувач переміщує мишу і потім відпускає кнопку, графічна частина програми визначає яку фігуру їй потрібно малювати.
1.1 Встановлення прапорців.
Створіть додаток з одним документом painter.dsw.
Почнемо з оголошення необхідних прапорців, а також об’єктів для збереження координат початкової і кінцевої точки.
В конструкторі цим прапорцям присвоюється значення false. Насправді їх необхідно скидати кожен раз коли користувач обирає новий режим малювання, тому необхідно створити новий метод MakeAllFlagsFalse() і оголосимо його в заготовочному файлі класу вигляду painterView.h:
class CPainterView : public CView
{
…
protected:
CPoint Anchor;
CPoint DrawTo;
CPoint OldPoint;
boolean bDrawFlag;
boolean bLineFlag;
boolean bRectangleFlag;
boolean bEllipseFlag;
boolean bFillFlag;
void MakeAllFlagsFalse();
…
}
Сам метод виглядає дуже просто:
void CPainterView::MakeAllFlagsFalse()
{
bDrawFlag=false;
bLineFlag=false;
bRectangleFlag=false;
bEllipseFlag=false;
bFillFlag=false;
}
Сам метод необхідно викликати у конструкторі:
CPainterView::CPainterView()
{
// TODO: add construction code here
MakeAllFlagsFalse();
}
Прапорці готові к роботі.
2.2 Створення меню і кнопок панелі інструментів.
Відкрийте редактор меню і створіть всі необхідні команди:
Потім відкрийте панель інструментів і створіть нові кнопки:
Тепер зв’яжіть кнопки з командами меню, які вони представляють – для цього двічі клацніть на кнопці і оберіть ідентифікатор команди меню зі списку ID діалогового віна Properties.
Підготовка користувацького інтерфейсу готова.
2.3 Зв’язування прапорців з засобами користувацького інтерфейсу.
Коли користувач обере режим малювання, необхідно задати відповідні значення прапорців. За допомогою Class Wizard зв’яжіть метод кожної команди меню.
void CPainterView::OnToolsLine()
{
// TODO: Add your command handler code here
MakeAllFlagsFalse();
bLineFlag=false;
}
void CPainterView::OnToolsEllipse()
{
// TODO: Add your command handler code here
MakeAllFlagsFalse();
bEllipseFlag=false;
}
void CPainterView::OnToolsFillfigure()
{
// TODO: Add your command handler code here
MakeAllFlagsFalse();
bFillFlag=false;
}
void CPainterView::OnToolsRectangle()
{
// TODO: Add your command handler code here
MakeAllFlagsFalse();
bRectangleFlag=false;
}