如何读取BMP文件的部分像素数据并显示

如何读取BMP文件的部分像素数据并显示,第1张

如果你是要读取“超大位图”,还要很快的速度,那么——

知不知道DirectX和Windows API之间最大的区别?

答案是——速度!

你用API,就要忍受速度慢!我曾分别用DX和API做个两个内容完全一样的小动画——一个小球在一个窗口里跳来跳去,结果显示:用API会用明显的闪烁,而DX完全没有任何不希望的问题出现!所以恐怕你用API是达不到“超大位图”的要求的。

另外,DX我也正在学,恐怕暂时还帮不了你什么,祝你早日解决吧。但我不认为使用传统的API会有办法的。真的。

这是toolbar子窗口

具体说明参考msdn

>

{

int x=5,y=5,width,height;//x,y是需要查找的点的坐标,从0开始

GdiplusStartupInput gdiplusStartupInput;

ULONG_PTR gdiplusToken;

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);//启动GDI+,方便加载位图

Bitmap bmp(_T("E:\\cbmp"));

HBITMAP hBmp = NULL;

bmpGetHBITMAP(Color(0),&hBmp);//获取位图句柄

BITMAP bi = {0};

GetObject(hBmp,sizeof(BITMAP),&bi);//获取位图信息,包括深度,宽高,步长等

width = bibmWidth;height = bibmHeight;//保存宽高

byte pBit = new byte[bibmWidthBytesbibmHeight];

::GetBitmapBits(hBmp,bibmWidthBytesbibmHeight,pBit);//获取位图数据

int n = ybibmWidthBytes + xbibmBitsPixel/8;

int out = RGB(pBit[n+2],pBit[n+1],pBit[n]);//定位到数据中获取颜色信息

GdiplusShutdown(gdiplusToken);//关闭GDI+

}

这里是用GDI+加载位图,也可以用第三方库加载位图获取位图数据然后直接定位像素,使用的时候记得加GDI+的头文件,否则编译不过

以上就是关于如何读取BMP文件的部分像素数据并显示全部的内容,包括:如何读取BMP文件的部分像素数据并显示、win32 API编一个文本编辑器,怎么导入BMP文件实现点击按钮就完成 *** 作的功能、如何用C++获取一张bmp图片(24位)的RGB量及长宽等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9319675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存