如果想手动绘制每一个点的话,个人比较推荐用opengl;
绘制点比较占时间主要原因是内存和显卡缓存的交互比较慢;setPixel的原理是每调用一次就把内存数据写到显卡缓存上,这样画一个屏幕就得交换1024*768次。
比较快速的办法是先写好1024*768大小的一个数组,然后把这个数组一次性的写到显卡缓存里面去,这样画一个屏幕就只用交换一次。但是自己处理这个工作稍显麻烦~~所以建议用opengl;当然directx也行,不过个人不喜欢。
画一个点
然后用
StretchBlt
把一个点放大到整个屏幕即可
如果是一个矩形,可试试
RECT rect = {0, 0, 1024, 768};
::SetBkColor(hDC, RGB(0, 255, 0));
::ExtTextOut(hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
如果是其它可描绘的形状,采用FillPath
当然还可以使用GDI+
aaa833后面的思路是对的,将其保存为一个数组,用openGL或DirectX都可以。
建议使用DirectX