html任意形状button,图形界面上的任意形状图形按钮

摘要

随着计算机的发展和普及,人们对于软件的界面美观性要求越来越高。MFC提供了很多标准控件,比如按钮控件,按钮在MFC编程中有着较高的使用频率。本文将介绍如何实现在有背景图片的情况下,任意形状按钮的自绘方法。本文使用基于对话框工程程序进行演示。

关键字: VC++ 按钮 自绘 任意形状 图形

实现原理

我们知道windows窗口默认都是矩形,要实现任意形状的窗口就需要自绘。为此从CBUTTON派生一个按钮类CControlButton,重载DrawItem消息处理进行自绘。图片的背景是矩形的,假如我们的按钮图片是圆形的,当把图片绘制上去之后,我们发现多出了背景部分。如何消除背景呢?

为了解决这个问题,我们可以用BitBlt 中的MERGEPAINT和SRCAND的方式进行绘制。 MERGEPAINT是把图形反色后再同贴图目的地进行OR操作,而SRCAND是把图形和贴图目的地进行AND操作。在计算机中,使用的是数字图像处理,每一种颜色都是由RGB表示的,RGB是指红、绿、蓝三原色,只要有这3种颜色和对应的颜色强度就可以合成各种颜色了。比如,黑色的RGB值为(0,0,0),白色的RGB值为(255,255,255),括号内对应的是红绿蓝3种颜色的强度。在数字图像处理中可以实现OR、AND等逻辑运算。任何颜色同白色进行OR运算结果都为白色,进行AND运算结果都是该颜色本身;任何颜色跟黑色进行OR运算结果都为该颜色本身;进行AND运算结果都是黑色。为此,我们准备两张图片,如下图所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值