Windows DC学习
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(void) {
HWND hWnd = FindWindow(NULL, "123.txt - 记事本"); // 获得控制台窗口句柄
int nPos = 0;
while (1) {
HDC hDC = GetDC(hWnd); // 获得控制台窗口绘图DC
// 随意绘制的一些内容
//HPEN hPen = CreatePen(PS_SOLID, 1, RGB(200, nPos % 256, (nPos * 3) % 256)); // 创建一个画笔 相关知识查找MSDN 输入GDI方面的知识 创建填充用的笔刷用Brush
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(00, 0, 0));
HPEN hOldPen = (HPEN)SelectObject(hDC, hPen); // 让DC选择此画笔
for (int i = 0; i < 300; i++) {
// 画线
MoveToEx(hDC, (i + nPos) % 800, (int)(sin(i / 10.0) * 100 + 200), NULL);
LineTo(hDC, (i + nPos) % 800, (int)(sin((i + 1) / 10.0) * 100 + 100));
}
if (nPos % 70 == 0)
;//InvalidateRect(hConsole, NULL, TRUE); // 刷新窗口
SelectObject(hDC, hOldPen); // 恢复原有画笔
nPos = (nPos + 20) % 800;
// 停顿时间
Sleep(1000);
ReleaseDC(hWnd, hDC);// 释放DC
InvalidateRect(hWnd, NULL, TRUE); // 刷新窗口
}
return 0;
}
本文通过一个具体的示例,展示了如何使用WindowsDC进行绘图操作,包括获取窗口句柄、获取设备上下文(DC)、创建画笔、选择画笔、绘制线条等。代码中详细解释了如何动态地在窗口上绘制波动的线条,并通过改变颜色和位置实现动画效果。
9003

被折叠的 条评论
为什么被折叠?



