Я пытаюсь нарисовать синусоидальную волну, используя win32 api. Я сделал это.draw cartesian system using win32 api
hDC = GetDC(hWnd);
while (TRUE)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
DispatchMessage(&msg);
}
if (msg.message == WM_QUIT)
break;
wavefunc(hWnd, hDC);
}
void wavefunc(HWND hWnd, HDC hDC)
{
double full = 2 * pi * _freq;
static double _x = 0;
short int _y = 0;
short _y = (short)(sin(_x/_freq)*_amp) + 300;
if (_x >= full)
_x -= full;
SetPixel(hDC, 600, _y, blue);
ScrollWindow(hWnd, -1, 0, NULL, NULL);
Sleep(_sTime);
_x++;
}
Теперь я пытаюсь выяснить, как нарисовать декартовую систему. Но без результата.
У меня есть окно, которое прокручивается при каждом значении sin.
Я стараюсь рисовать линии на hdc. Когда прокручивается окно, невозможно остановить hdc, чтобы не прокручивать.
Затем я создаю еще один hDc из окон, но не удастся. Как это сделать? Проблема состоит в том, чтобы иметь прокрутку окна, но с некоторыми исправлениями точки.
Windows выполняет все переводы для вас, предполагая, что ваш экран просмотра настроен правильно (см. [SetViewportExtEx] (https://msdn.microsoft.com/en-us/library/dd145098.aspx) и [SetViewportOrgEx] (https://msdn.microsoft.com/en-us/library/dd145099.aspx)). Это подробно объясняется в [Трансформация пространств координат] (https://msdn.microsoft.com/en-us/library/dd145139.aspx). – IInspectable
Я не думаю, что это то, что я хочу ... Я хочу только нарисовать две фиксированные линии ... – user5692672
Это легкая часть: [MoveToEx] (https://msdn.microsoft.com/en-us/library /dd145069.aspx) и [LineTo] (https://msdn.microsoft.com/en-us/library/dd145029.aspx). Если вы хотите сделать вашу жизнь труднее, чем она должна быть, вычислите отображение координат мира на координаты устройства самостоятельно. Или система сделает это за вас (как упоминалось в моем предыдущем комментарии). – IInspectable