c#中怎样给textbox添加背景图片

=======================从textbox类继承处理绘制背景消息===================
     class  mytextbox : textbox
     {
         const  int  wm_erasebkgnd = 0x0014;
 
         private  image backimage;
 
         [displayname( "背景图片。" )]
         public  image backimage
         {
             get  return  backimage; }
             set  { backimage = value; }
         }
 
         protected  void  onerasebkgnd(graphics gs)
         {
             gs.fillrectangle(brushes.white, 0, 0,  this .width,  this .height);  //填充为白色,防止图片太小出现重影
             if  (backimage !=  null ) gs.drawimage(backimage, 0, 0);  //绘制背景。
             gs.dispose();
         }
 
         protected  override  void  wndproc( ref  message m)
         {
             if  (m.msg == wm_erasebkgnd)  //绘制背景
             {
                 onerasebkgnd(graphics.fromhdc(m.wparam));
                 m.result = (intptr)1;
             }
             base .wndproc( ref  m);
         }
     }
 
==================窗口类里设置控件的字体颜色等============================
 
         const  int  wm_ctlcoloredit = 0x0133;
         const  int  transparent = 0x1;
         const  int  null_brush = 0x5;
 
         [dllimport( "gdi32" )]
         static  extern  int  setbkmode(intptr hdc,  int  bkmode);
         [dllimport( "gdi32" )]
         static  extern  int  settextcolor(intptr hdc,  int  color);
         [dllimport( "gdi32" )]
         static  extern  intptr getstockobject( int  fnobject);
 
         protected  override  void  wndproc( ref  message m)
         {
             if  (m.msg == wm_ctlcoloredit && m.lparam == mytextbox1.handle) //类型为edit(textbox)
             {
                 setbkmode(m.wparam, transparent); //设置背景透明
                 settextcolor(m.wparam,0xff);      //字体颜色为红色
                 m.result = getstockobject(null_brush);
                 return ;
             }
             else  base .wndproc( ref  m);
       }

转载于:https://www.cnblogs.com/jiaocheng/p/4770870.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值