none
位图显示不清晰 怎样给位图加调色板 RRS feed

  • 问题

  • BITMAP bitMap; m_bmpbackground.GetBitmap(&bitMap); CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpbackground); //将背景位图选入内存dc中 dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY); 显示出来的效果不好
    C++
    2009年6月3日 2:16

答案

  • 自定义调色板比较麻烦并且可能显示不正常,常用的方法是使用桌面的调色版.

    HDC hDesktopDC = ::GetDC(::GetDesktopWindow());
    HDC hDC = ::CreateCompatibleDC(hDesktopDC);
    ::ReleaseDC(::GetDesktopWindow(), hDesktopDC);

    显示效果不好可能和StretchBlt有关
    设置拉伸算法调用SetStretchBltMode(hDC, HALFTONE);这样效果会好得多。
    Hello world
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月3日 3:32
    版主

全部回复

  • 自定义调色板比较麻烦并且可能显示不正常,常用的方法是使用桌面的调色版.

    HDC hDesktopDC = ::GetDC(::GetDesktopWindow());
    HDC hDC = ::CreateCompatibleDC(hDesktopDC);
    ::ReleaseDC(::GetDesktopWindow(), hDesktopDC);

    显示效果不好可能和StretchBlt有关
    设置拉伸算法调用SetStretchBltMode(hDC, HALFTONE);这样效果会好得多。
    Hello world
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月3日 3:32
    版主
  • 最好不要拉伸,否则会出现图形变形或者失真等一系列问题。


    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    2009年6月5日 8:44
    版主