Button的自绘制

本文介绍了在Windows CE环境下,如何实现Button控件的自绘制,包括设置ODS_OWNERDRAW风格,实现DrawItem函数,以及根据不同状态绘制不同效果的按钮,如鼠标悬停、按下状态。示例代码展示了如何利用DC进行图形绘制和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  自绘制在UI设计中经常用到, 特别是WinCE下,为了使界面美观并具有个性化,一般的控件都使用了自绘制功能。下面简单介绍Button的自绘过程。

  1. void ODButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  2. {
  3.     CDC dc;
  4.     CRect rc;
  5.     rc = lpDrawItemStruct->rcItem;//绘图区域
  6.     dc.Attach(lpDrawItemStruct->hDC);//得到当前设备环境
  7.          //此处利用DC绘制Button
  8.     dc.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(255,0,0));
  9.          //下面绘制文本
  10.     CString str;
  11.     GetWindowText(str);
  12.     dc.SetBkMode(TRANSPARENT);
  13.     dc.DrawText(str,str.GetLength(),rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
  14.     dc.Detach();//与Attach对应,取消对DC的挂接
  15. }

  如果要使控件自绘制,有这么两个步骤:

1、设置窗口ODS_OWNERDRAW的风格,我们可以在资源视图内修改Button属性,也可以通过API来修改。

2、实现DrawItem函数,声明中应为虚函数,它用来绘制Button。如果说第一步是打开一个灯的开关,那么这步就是使灯发光发亮。

  上面的代码比较简单,函数的参数是个DRAWITEMSTRUCT结构体的指针,这个结构体在控件的自绘制中占有很重要的地位,了解了它绘制图形就相对的简单了。先来看看里面的内容:

  1. typedef struct</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值