有需求,要圆形按钮

解决方案 »

  1.   

    自己怎么做控件,放picturebox的话那几个角还是有的
      

  2.   

    自定义控件,用png格式的图片为bgimage,控件背景色透明
      

  3.   

    如果用picturebox里面放个圆形图片,虽然四个角看不到了,单击四个角还是会触发单击事件。这样是不是不太真实了?
      

  4.   


    protected override void WndProc(ref Message m)
    {
        base.WndProc(ref m);
        if (m.Msg == 0xf || m.Msg == 0x133)
        {
            IntPtr hDC = GetWindowDC(m.HWnd);
            if (hDC.ToInt32() == 0)
            {
                        return;
            }
             //边框Width为1个像素 
             System.Drawing.Pen pen = new Pen(this._BorderColor, 1); ;
            if (this._HotTrack)
            {
               if (this._IsMouseOver)
               {
                    pen.Color = this._BorderColor;
               }
               else
               {
                    pen.Color = Color.FromArgb(199, 219, 229);
                }
         } 
                    //绘制边框 
           System.Drawing.Graphics g = Graphics.FromHdc(hDC);
          g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
          g.DrawRectangle(pen, 0, 0, this.Width - 1, this.Height - 1);
          pen.Dispose();
          //返回结果 
           m.Result = IntPtr.Zero;
                    //释放 
           ReleaseDC(m.HWnd, hDC);
         }
    }上面是对边框进行了绘制,同理背景也要画成圆的。如果你要圆的就用g.DrawEllipse(pen,x,y,r,r)想办法吧。没直接画圆的就不贴代码了。