我看了很多关于位图的资料,位图有 信息头结构,颜色表(有或无),象素阵列。
我想自己创建一个内存中的位图,位图上的象素点颜色都手动计算,用真彩色模式,也就是 存储RGB值,那么我写的时候,创建完了位图的头部信息,并分配好了内存空间,我接下来该怎么写呢? 写的格式是什么? 请不要用这样的方法: 在内存中创建 屏幕关联描述表 ,然后用绘图函数的绘图在位图上绘图的方法,因为信息处理量很大很复杂的时候,这样的效果并不好,并且速度很慢。
我想自己创建一个内存中的位图,位图上的象素点颜色都手动计算,用真彩色模式,也就是 存储RGB值,那么我写的时候,创建完了位图的头部信息,并分配好了内存空间,我接下来该怎么写呢? 写的格式是什么? 请不要用这样的方法: 在内存中创建 屏幕关联描述表 ,然后用绘图函数的绘图在位图上绘图的方法,因为信息处理量很大很复杂的时候,这样的效果并不好,并且速度很慢。
则: 位图 X 范围 0 ~ w-1, Y: 0 ~ h-1.
SetPixel(x,y, r, g ,b)
{ bmpdata[w * 3 * y + x * 3 ] = r;
bmpdata[w * 3 * y + x * 3 + 1 ] = g;
bmpdata[w * 3 * y + x * 3 + 2 ] = b;
}
TO chzy00(逸少)
设 BYTE* bmpdata 指向位图图形数据的首地址
我就是想知道的是怎么得到这个首地址。
那么举个例子吧!我要得到 一个内存中绘制的已经建立好的位图的第一个象素点值,然后再修改这个值。首先生命以下:GetPixel()和SetPixel()的效率很低的,我一次要处理的数据可能是一个屏幕1024*768,如果再使用多向缓冲,就跟可怕了,很容易就死机了!得到 一个内存中绘制的已经建立好的位图的第一个象素点值,然后再修改这个值!
CreateDIBSection(HDC,CONST BITMAPINFO *,UINT,VOID **,HANDL,DWORD);
其中的参数VOID **,是就是二维数组(width height)的信息写进了位图里面?
如果不够,就需要补齐。小心处理 BITMAPINFO 这个结构,把它写到文件,然后再写你的位图。其实还挺容易的。============================================================================
提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
http://alphasun.betajin.com/ 给我发信息请附带原帖地址
http://www.betajin.com/alphasun/index.htm
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析