gzrjzcx 2017-02-20 05:24 采纳率: 0%
浏览 1062
已采纳

载入bmp图片感觉失真变黄

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

  • 写回答

5条回答 默认 最新

  • 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函数画出来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大