http://tikitak.narod.ru ---- Главная страница сайта
Шаг 12 - Учим рисовать CPaintDC
Куда ты плывешь крыша моя ?
В какие реки в какие моря ?
"Aгата Кристи - Опиум"
Это по поводу тем шагов !
Создание проекта
Step1. Жив здоров, а чего ему будет. Хороший проект.
Теперь мы попробуем создать свой CPaintDC, ведь он умеет рисовать далеко не все, крест например !
Создаем код
Создаем свой класс от CPaintDC
class CMyPaintDC: public CPaintDC
{
public:
CMyPaintDC(CWnd* pWnd);
void DrawCross(int iPosX, int iPosY);
};
И реализацию конечно
CMyPaintDC::CMyPaintDC(CWnd* pWnd)
:CPaintDC(pWnd)
{
}
void CMyPaintDC::DrawCross(int iPosX, int iPosY)
{
MoveTo(iPosX-50,iPosY);
LineTo(iPosX+50,iPosY);
MoveTo(iPosX,iPosY-50);
LineTo(iPosX,iPosY+50);
}
Пробуем
void CMainWnd::OnPaint()
{
CMyPaintDC dc(this);
CPen MyPen(PS_DASHDOT,1,RGB(0,255,0));
dc.SelectObject(MyPen);
for (int x=1;x<400;x=x+100)
{
dc.DrawCross(100+x,100+x);
}
}
Описание
Примененный подход должен быть до боли знаком.
Вспомним
// кнопка
class CMyButton: public CButton
{
.......
}
// рамка окна
class CMainWnd : public CFrameWnd
{
....
};
Обратите внимание на реализацию конструктора. Нам то его не нужно переделывать , и поэтому сразу при содании вызываем конструктор папы и передаем ему параметры.
Откуда я взял параметры в конструктор CMyPaintDC ?. От CPaintDC - написал , навел курсор и нажал F1. Хорошая кнопка помогает часто !
Позволю себе остановиться на поиске помоши. Видите бинокль в проекте ? Нажмите на него, мышкой естественно и левой кнопкой конечно. Диалоговое окно появиться с вкладками Index и Quere. В Index введите, ну там строка для ввода всего одна, наш CPaintDC и внизу будут темы. Про конструктор это CPaintDC::CPaintDC, шелкните мышком по нему. От туда параметры я и взял. А вот в Quary вы найдете все страницы HTML помощи где упоминается введенное вами слово , после нажатия кнопки. Что за кнопка догадаетесь.
Далее вы в методе OnPaint рисуем. Но не просто, а создаем сначало перо. CPen - это перо. Мы свое делаем с параметрами - тип, толщина, цвет. PS_DASHDOT - это пунктир. И методом SelectObject указываем что рисовать именно им. Рисуем кресты по диагонали.
Запускайте, компилируйте. Кресты, зеленые, в виде пунктиров по диагонали. Круто ! Красиво !
Шпаргалка
Создай наследника
class CMyPaintDC: public CPaintDC
.........
Оставь конструктор
CMyPaintDC::CMyPaintDC(CWnd* pWnd)
:CPaintDC(pWnd)
Создай свои функции рисования
class CMyPaintDC: public CPaintDC
{
.............
void DrawCross(int iPosX, int iPosY);
};
Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|