gzrjzcx
gzrjzcx
2017-02-20 05:24
采纳率: 6.7%
浏览 1.0k
已采纳

载入bmp图片感觉失真变黄

最近在学习中国象棋程序的书
照着里面编程序,但是我想把它的素材变成象棋小巫师里的素材,
把棋子弄进去后,为什么感觉失真了?
如图,左边的是我的,右边的是小巫师的。。
我用的是cimagelist里面的create函数。。
m_Chessman.Create(IDB_chessman1,56,15,RGB(0,255,0));
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • gzrjzcx
    gzrjzcx 2017-02-22 03:13
    已采纳

    自己解决了
    应该是cImagelist.create函数的问题
    BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );
    BOOL Create( UINT nBitmapID, int cx, int nGrow, COLORREF crMask );
    两种函数都能创建cImagelist,但是第二种貌似直接默认图片是4Bit 36色的?(具体我也不懂)
    不过第一种就可以自己选择,nFlags这个参数写ILC_COLORDDB|ILC_MASK,指的是使用系统设备颜色且有透明色

    所以改成这样:
    m_Chessman.Create(56,56,ILC_COLORDDB|ILC_MASK,15,0);//ILC_COLORDDB|ILC_MASK:使用当前设备色且有透明效果
    CBitmap cBitmap;
    cBitmap.LoadBitmap(IDB_chessman1);
    m_Chessman.Add(&cBitmap,MASK_COLOR);
    cBitmap.DeleteObject();

    先创建cImagelist,然后读取bmp图片,然后添加进入cImagelist里面用draw函数画出来

    点赞 评论
  • fight_in_dl
    战在春秋 2017-02-20 05:49
    点赞 评论
  • weixin_37585680
    沉默的小新 2017-02-20 06:30

    会不会是你本身电脑里对系统的颜色管理器中默认颜色设置被系统更改了?就是系统设置颜色管理,在打印机那栏选择,其中的显示器,然后第一个框打勾,下面那档才可以设置,选择2261w,按下面的删除,再添加一个新的设置,选择这里面档sRGB IEC61966-2.1,点确定就添加了,再都关闭运行一下

    点赞 评论
  • shen_wei
    shen_wei 2017-02-20 07:57
    点赞 评论
  • fight_in_dl
    战在春秋 2017-02-21 09:45

    不好意思,之前链接发错了。

    问题解答

    点赞 评论

相关推荐