如果你是要读取“超大位图”,还要很快的速度,那么——
知不知道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量及长宽等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)