【发布时间】:2015-12-29 18:34:08
【问题描述】:
我正在尝试使用 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 不滚动。
然后我从 Windows 创建另一个 hDc 但没有成功。 这该怎么做?问题是有窗口滚动但有一些点修复..
【问题讨论】:
-
Windows 会为您执行所有翻译,前提是您的视口设置正确(请参阅SetViewportExtEx 和SetViewportOrgEx)。 Transformation of Coordinate Spaces 对此进行了详细解释。
-
我不认为这是我想要的...我只想画两条固定线...
-
我已经添加了这行:SelectObject(hDC, hBluePen); MoveToEx(hDC, 0, 0, NULL);静态 int x = 250;静态int y = 250; LineTo(hDC, x, y); x++;你++;。 ...问题是滚动窗口后,前线仍然存在...
-
这是最好的效果...sinewave