像素点颜色的存储

nakebuyiding 2008-09-24 10:49:32
我想扫描一块区域的BMP图,把各像素点的颜色值COLORREF 存到一个数组中,可好像没有COLORREF这样的数组(我定义使用

时出错了)。 请问用什么类型的数组才能存储我遍历到的各像素点的颜色值。或说不能用数组,非得用文件操作把BMP颜色值存进

DAT文件中去?

各位应该已经看出来了,我用的是很笨的方法,哪位可以告诉我一个更好的方法,我不胜感激!

还有我Load一张位图,操作完了,我想让它消失,在它所占的地方重新Load另外一张Bmp处理。我用RedrawWindow()不

管用,请问怎么办?

谢谢了!
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nakebuyiding 2008-09-24
  • 打赏
  • 举报
回复
谢谢你的回帖,我再看看吧。分我会尽快给的
wltg2001 2008-09-24
  • 打赏
  • 举报
回复
贴位图用的是BltBit,应该和内存无关才对啊
nakebuyiding 2008-09-24
  • 打赏
  • 举报
回复
您好,我照你说的做了,可是执行的时候内存出错啊……是不是变量设置的问题?我重命名了变量还不行啊~
wltg2001 2008-09-24
  • 打赏
  • 举报
回复
我操作完Load进的一张Bmp后,RedrawWindow()使之消失,在同一区域Load另外一张Bmp,运行是内存出错……
========================================
在同一区域Load另一个BMP,直接用BltBit不就行了,不用RedrawWindow的啊,如果由于位图大小不一致,你可以将第一个位图用BltBit用SRCINVERT方式再显示一次,不就擦去了吗
nakebuyiding 2008-09-24
  • 打赏
  • 举报
回复
请问一下第二个问题吧:

我操作完Load进的一张Bmp后,RedrawWindow()使之消失,在同一区域Load另外一张Bmp,运行是内存出错……

谢谢了~
nakebuyiding 2008-09-24
  • 打赏
  • 举报
回复
可以,但是定义时下标不能是变量。郁闷~

wltg2001 2008-09-24
  • 打赏
  • 举报
回复
你看一下头文件:
typedef DWORD COLORREF;
typedef DWORD *LPCOLORREF
这样估计是不行的,而且位图的类型不一样,你的处理方法肯定也不同。
lizhigang34 2008-09-24
  • 打赏
  • 举报
回复

COLORREF cr[][];

用个二维数组可以吗??
wltg2001 2008-09-24
  • 打赏
  • 举报
回复
我想扫描一块区域的BMP图,把各像素点的颜色值COLORREF 存到一个数组中
=================================
可以用int GetDIBits(
HDC hdc, // handle to DC
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // array for bitmap bits
LPBITMAPINFO lpbi, // bitmap data buffer
UINT uUsage // RGB or palette index
);
来将数据存放一个缓冲区中,至于对这个缓冲区的处理还要看位图的具体情况,比如一个32位位图的话,则每个点占32个bit位,按BGR的顺序排列

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧