目前位置: VCer资源中心 >>> VCer论坛 >>> 技术问答

[本帖已阅读1575次 分值2 回复1次] 张贴资源 发回信箱 控制面板

图像api函数的问题

提供者:Johnnyding 张贴时间:2004-07-29 13:11:44.0 出处:vcer.net 作者:不祥

图像api函数的问题(2004-07-29 13:11:44.0)


Just Waiting


 
级别: VCer小兵
头衔: VCer会员

经验: 22
作品: 2
分会: 华北分会
注册: 2004-07-28 15:36:32.0
登录: 2004-07-29 13:09:06.0

上一个问题,小弟我一解决了, 是调用时间没弄好。

我现在用drawdibdraw()函数可以直接显示一图像数据流,但是,我想改用stretchdibits()

函数显示,请问,stretchdibits函数,可以直接显示前面提到的那个图像数据流吗,

还用做一些预处理吗?比如手工添加一些相关头信息?

如何用stretchdibits()显示啊

请高手指点

谢谢

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/2876.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]

re:图像api函数的问题

 这是我自己写的一个dib类的绘图函数

只要构造好头部就可以了

稳中的乱麻是中文的注释 复制到这里就有问题了

不知道怎么回事哈

现在忙没有时间该过来

以后发贴补这样了

BOOL CDIB::PaintDIBOnDC(HDC hDC , RECT destRect)

{

 LPSTR                lpbiHdr ;//λͼµÄÍ·ÐÅÏ¢

 LPSTR                lpBits ;//λͼµÄÊý¾ÝÐÅÏ¢

 BOOL                 bSuccess = FALSE ;//³É¹¦Óë·ñµÄ±ê¼Ç

 HPALETTE             hPalette = NULL ;//µ÷É«°å

 HPALETTE             hOldPalette = NULL ;//µ÷É«°å

 if(!this->m_hDIB)

 {

  //ûÓйØÁªÎ»Í¼

  MessageBox(NULL,"ûÓйØÁªÎ»Í¼","»æÍ¼´íÎó",MB_OK);

  return FALSE ;

 }

 //λͼͷÐÅÏ¢

 lpbiHdr = (LPSTR)::GlobalLock(this->m_hDIB) ;

    //λͼÊý¾ÝÐÅÏ¢

 lpBits =lpbiHdr + sizeof(BITMAPINFOHEADER) + GetColorNum() * sizeof(RGBQUAD) ;

    //´´½¨dibµÄµ÷É«°å

 hPalette = CreatePalettle() ;

    //ʵÏÖµ÷É«°å

 if(hPalette)

 {

     hOldPalette = SelectPalette(hDC,hPalette,TRUE) ;

  RealizePalette(hDC) ;

 }

 //ÉèÖÃÏÔʾģʽ

 ::SetStretchBltMode(hDC, COLORONCOLOR);

     //»æÍ¼

 /*

 bSuccess = ::StretchDIBits(  hDC ,

                           destRect.left ,

                           destRect.top ,

         destRect.right-destRect.left ,

            destRect.bottom-destRect.top,

                           0 ,

         0 , 

         GetWidth() ,

            GetHeight(),

                           lpBits ,

         (LPBITMAPINFO)lpbiHdr ,  

         DIB_RGB_COLORS ,

         SRCCOPY 

         );

 */

    ///* 

  // ÏÔʾÔÚÔ¤¶¨ÇøÓòµÄÖмä

  int destX = destRect.left + (destRect.right - destRect.left - GetWidth()) / 2 ;

  int destY = destRect.top + (destRect.bottom - destRect.top - GetHeight()) / 2 ;

  bSuccess = ::SetDIBitsToDevice( hDC ,   \

                               destX ,    \

                               destY,    \

             GetWidth() ,    \

                GetHeight(),    \

                               0 ,    \

             0 ,     \

             0,    \

                GetHeight(),    \

                               lpBits ,   \

             (LPBITMAPINFO)lpbiHdr ,      \

             DIB_RGB_COLORS   \

                                   );

    //*/ 

 //»Ö¸´µ÷É«°å

 if(hOldPalette)

 {

     SelectPalette(hDC,hOldPalette,FALSE) ;

 }

 //½âËø

 ::GlobalUnlock(this->m_hDIB);

    return bSuccess;

}

yangwen 于 2004-07-30 01:24:30.0 编辑 [回复该贴]