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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2012, 23:34   #1
Ultor
 
Регистрация: 18.03.2012
Сообщений: 3
По умолчанию спираль в WM_PAINT

помогите пожалуйста в обработчике сообщения WM_PAINT написать код для рисования спирали, вдоль которой будет выводиться вводимые с клавиатуры символы(
Ultor вне форума Ответить с цитированием
Старый 27.03.2012, 12:57   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Это тебе не в wm_paint мудрить нужно, а в wm_char, где будешь символы вводить и там менять координаты. Плюс к этому рисовать нужно в памяти, чтобы не затирать предыдущие символы,а в wm_paint только выводить.
counter вне форума Ответить с цитированием
Старый 29.03.2012, 14:52   #3
Ultor
 
Регистрация: 18.03.2012
Сообщений: 3
По умолчанию

помогите, спираль рисует, а вот текст криво рисует(
как сделать, чтоб он ровно над линией шел и изменял наклон?
Цитата:
case WM_PAINT:
{
HPEN hPen;

hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
SetMapMode(hdc,MM_LOMETRIC);
SetViewportOrgEx(hdc,rect.right/2,rect.bottom/2,NULL);
SetBkMode(hdc,TRANSPARENT);
hPen=CreatePen(PS_SOLID,6,RGB(0,0,0 ));
SelectObject(hdc,hPen);
for (double t=0;t<50;t+=0.01)
{
x = 20*t*sin(t);
y = 20*t*cos(t);
LineTo(hdc,x,y);
}
DeleteObject(hPen);
EndPaint(hWnd, &ps);
};
break;

case WM_CHAR:
{
char symbol;
RECT rectangle;
LOGFONT MyFont;
HFONT hFont;

hdc = GetDC(hWnd);
symbol=(char)wParam;
GetClientRect(hWnd,&rectangle);
SetMapMode(hdc,MM_LOMETRIC);
SetViewportOrgEx(hdc, rectangle.right/2, rectangle.bottom/2,NULL);
SetBkMode(hdc, TRANSPARENT);
SetBkColor(hdc,RGB(255,0,0));
SetTextColor(hdc,RGB(rand()%256,ran d()%256,rand()%256));
MyFont.lfClipPrecision=CLIP_LH_ANGL ES;
MyFont.lfHeight=charHeight;
MyFont.lfCharSet=ANSI_CHARSET;
MyFont.lfWidth=charWidth;
MyFont.lfQuality=DEFAULT_QUALITY;
MyFont.lfWeight=FW_REGULAR;
MyFont.lfItalic = false;
MyFont.lfUnderline = false;
MyFont.lfStrikeOut = false;
MyFont.lfPitchAndFamily=FIXED_PITCH |FF_MODERN;
MyFont.lfEscapement = 0;

hFont=CreateFontIndirect(&MyFont);
SelectObject(hdc,hFont);
x = 20*t2*sin(t2);
y = 20*t2*cos(t2);
t2+=0.1;
TextOutA(hdc,x, y,&symbol, 1);

DeleteObject(hFont);
ReleaseDC(hWnd, hdc);
};
break;

Последний раз редактировалось Ultor; 29.03.2012 в 14:57.
Ultor вне форума Ответить с цитированием
Старый 30.03.2012, 23:33   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

1. Зачем в WM_PAINT постоянно создавать\удалять перо? Создайте его при запуске программы. а в конце удалите.
2. При создании шрифта пробовали указывать параметр lfOrientation ?
counter вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спираль архимеда Di-em Общие вопросы Delphi 2 30.01.2012 19:25
Visual studio 2008 MFC WM_Paint jahoope1 Помощь студентам 4 14.09.2011 23:32
Wm_paint и Wm_create ZverGB Общие вопросы C/C++ 1 24.05.2010 16:55
Спираль radon228 Помощь студентам 0 16.05.2010 17:08
основы работы с сообщ. WM_PAINT и WM_COMMAND (uberlame)) CrazyN00b Win Api 3 08.04.2010 23:40