MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 用API实现绘图的有关问题!

用API实现绘图的有关问题!

www.MyException.Cn  网友分享于:2013-02-20  浏览:2次
用API实现绘图的问题!!!!!!
typedef struct _Color       //颜色
 {
 BYTE b,g,r;
 }Color,PaintBuffer;
PaintBuffer paintBuffer[1][800][600];//开辟两个绘图区缓冲区

问题:如何将paintBuffer[1]显示在窗口上?我尝试了用SetPixel方法逐个绘,结果特别慢。
求教.
api SetPixel

------解决方案--------------------
仔细参考一下 CBitmap 的各个函数,特别是
CreateBitmap
SetBitmapBits

先把你的数据,用上面的CBitmap方法创建一个CBitmap,

然后,试试 CDC::DrawState函数

或者还有最常见的方法的就是创建memdc, 选择你的bitmap 到memedc,然后 bitblt函数显示到屏幕

------解决方案--------------------
使用BITMAPINFO结构体和StretchDibBits函数
------解决方案--------------------
引用:
typedef struct _Color       //颜色
 {
 BYTE b,g,r;
 }Color,PaintBuffer;
PaintBuffer paintBuffer[1][800][600];//开辟两个绘图区缓冲区

问题:如何将paintBuffer[1]显示在窗口上?我尝试了用SetPixel方法逐个绘,结果特别慢。
求教.
  ……

逐点用SetPixel肯定慢,使用DIB会快很多:
1)使用CreateDIBSection创建一个DIB;其中的返回一个指针ppvBits可以直接作为FrameBuffer进行绘制
(相对其他使用HDC的优点)
2)在ppvBits上完成绘制后使用BitBlt将图形显示到HDC或其他的BackBuffer;
如果涉及复杂的图形(如多层)可以考虑使用DirectX,但会比较麻烦;使用CreateDIBSection效能基本上作简单的多媒体输出没有任何问题,如早先我们在作模拟器时,都是用的这个函数;我自己的Flash播放器也用的这个函数 ----- 算法写的好,甚至100FPS不是问题;

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有