MiniGui实现透明位图的方法

在做一个小项目时需要在屏幕上显示一个电子时钟,使用MINIGUI,实现效果如下图


实现这个效果必须是有那个图片显示数字,用到的图片类似如下:


结构显示在界面上,图片会覆盖原来的背景,造成效果不好。


解决这个问题有两种方法:

1、使用PNG格式透明底色的图片,这个需要MINIGUI支持PNG格式图片

2、使用MINIGUI提供的过滤位图的函数。


下面主要介绍第二种方法。

使用如下函数创建一个画布,注意最后一个参数必须为0

CreateMemDC(100,100, 16,MEMDC_FLAG_HWSURFACE | MEMDC_FLAG_SRCALPHA, 0x0000F000, 0x00000F00, 0x000000F0, 0x00000000);
然后把图片画在画布上

FillBoxWithBitmap(mem_dc, 0, 0, 0, 0, &myalarm);
设置画布过滤颜色

SetMemDCColorKey (mem_dc, MEMDC_FLAG_SRCCOLORKEY | MEMDC_FLAG_RLEACCEL, COLOR_black);
最后把画布铺到你的屏幕上去

BitBlt(mem_dc, 0, 0, 100, 100, hdc, 0, 0, 0);

实现的原理其实是相当于在把画布铺到屏幕过程中过滤掉你设置的特定颜色。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值