www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  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
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz