本帖最后由 guolaikk 于 2010-08-12 00:16:06 编辑

解决方案 »

  1.   

    GDI里面BitBlt已经是最快的了,还想更快的话DirectX去吧。
      

  2.   

    typedef struct tagBITMAPINFO {
        BITMAPINFOHEADER    bmiHeader;
        RGBQUAD             bmiColors[1];
    } BITMAPINFO
    这里面只要关心BITMAPINFOHEADER,我贴一点代码给你:
    HDC hScreenDC=CreateDC("DISPLAY",NULL,NULL,NULL);
    int Width=GetDeviceCaps(hScreenDC,HORZRES);
    int Height=GetDeviceCaps(hScreenDC,VERTRES);
    .......
    ZeroMemory(&bmInfo,sizeof(BITMAPINFO));
    bmInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
    bmInfo.bmiHeader.biWidth=width;//位图的宽度,可用上面的函数获取
    bmInfo.bmiHeader.biHeight=height;//位图的高度,也可用上面的函数获取
    bmInfo.bmiHeader.biPlanes=1;//调色板的个数,一般是1
    bmInfo.bmiHeader.biBitCount=bitCount;//像素的位数,自己看着办
    bmInfo.bmiHeader.biCompression=BI_RGB;//一办就用这个BI_RGB
    你也可以用GetObject(HBITMAP,sizeof(BITMAP),&BITMAP);
    获得BITMAP结构体,从中获得位图的宽度与高度。
      

  3.   

    主要是你对位图的结构不太了解吧,所以方法才会那么的局限
    位图结构由这几部分组成的:位图文件头:BITMAPFILEHEADER
    位图信息头:BITMAOINFOHEADER
    调色板:tagRGBQUAD
    和位图数据而BITMAPINFO是包括了位图信息头和调色板的