Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2010, 15:14   #1
vandrouny
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 42
По умолчанию Рисование мышкой

Доброго дня!
Вот всё пытаюсь сделать рисование многоугольника мышкой. Моя логика такая:
static int n=0;
POINT pt[10];

1. Нажатием левой клавиши запоминаю первую точку
Код:
case WM_LBUTTONDOWN:
	x=LOWORD(lParam); //coordinates 1
           y=HIWORD(lParam);
	break;
2. Отжатием - запоминаю вторую и последующие
Код:
case WM_LBUTTONUP:
        hdc=GetDC(hWnd);
        x2=LOWORD(lParam); //coordinates 2
        y2=HIWORD(lParam);
        SelectObject(hdc, hPen);
        SelectObject(hdc1, hPen);
        if (n==0) {pt[0].x=x; pt[0].y=y;}
        n++;
        pt[n].x=x2;
        pt[n].y=y2;
        ReleaseDC (hWnd,hdc);
        break;
3. Нажатием правой клавиши рисую получившуюся фигуру:
Код:
case WM_RBUTTONDOWN:
	hdc=GetDC(hWnd);
           SelectObject(hdc, hPen);
	SelectObject(hdc1, hPen);
	Polygon(hdc,pt,n);
	Polygon(hdc1,pt,n);
	n=0;
	ReleaseDC (hWnd,hdc);
           break;
Но не работает. Что я делаю не так?

Последний раз редактировалось vandrouny; 03.10.2010 в 15:22.
vandrouny вне форума Ответить с цитированием
Старый 03.10.2010, 19:57   #2
vandrouny
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 42
По умолчанию

Никто мне не помог( Но я разобрался сам. вот код, если кому вдруг понадобится.

case WM_LBUTTONDOWN:
x=LOWORD(lParam); //coordinates 1
y=HIWORD(lParam);
if (n==0) {
x0=x;
y0=y;
}
break;

case WM_LBUTTONUP:
hdc=GetDC(hWnd);

x2=LOWORD(lParam); //coordinates 2
y2=HIWORD(lParam);
SelectObject(hdc, hPen);
SelectObject(hdc1, hPen);
//choise++;
//if (choise==6) {choise=1;}
choise=5;
switch (choise) {
case 1:
Rectangle (hdc,x,y, x2,y2);
Rectangle (hdc1,x,y, x2,y2);
break;

case 2:
Ellipse (hdc,x,y, x2,y2);
Ellipse (hdc1,x,y, x2,y2);
break;

case 3:
MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
break;

case 4:
case 5:
if (n==0)
{
pt[0].x=x;
pt[0].y=y;
pt[1].x=x2;
pt[1].y=y2;
n=1;

MoveToEx(hdc,x,y,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x,y,0);
LineTo (hdc1,x2,y2);
}
else
{
MoveToEx(hdc,x0,y0,0);
LineTo (hdc,x2,y2);
MoveToEx(hdc1,x0,y0,0);
LineTo (hdc1,x2,y2);

pt[n].x=x2;
pt[n].y=y2;
}
n++;
x0=x2; y0=y2; //захоўваем пачатак наступнага адрэзка

break;

}
ReleaseDC (hWnd,hdc);
break;

case WM_RBUTTONDOWN:
hdc=GetDC(hWnd);
SelectObject(hdc, hPen2);
SelectObject(hdc1, hPen2);

if (choise==4) {
Polygon(hdc,pt,n);
Polygon(hdc1,pt,n);
}
if (choise==5) {
Polyline(hdc,pt,n);
Polyline(hdc1,pt,n);
}

ReleaseDC (hWnd,hdc);
break;
vandrouny вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перетаскивание мышкой Obey177 Общие вопросы Delphi 13 20.09.2010 11:10
Проблемка с мышкой. Терминатор Свободное общение 5 03.05.2009 23:17
Работа с мышкой Klio Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 03.05.2008 22:37
Помогите прикол с мышкой AngelOfDeath Общие вопросы Delphi 6 08.04.2008 14:57
Управление МЫШКОЙ!!! Рустам Помощь студентам 11 28.10.2007 12:15