winForm圆角矩形及C++builderForm圆角设计

来源:互联网 发布:云南大学 知乎 编辑:程序博客网 时间:2024/05/21 15:42
   就现在来说,使用C++builder开发windows编程的人数逐渐变少,由于公司坚持使用这个IDE工具,我也只好使用他。最近看见公司客户端登录界面感觉十分不爽,准备重做,决定参考qq界面,做出圆角矩形的,于是乎就在论坛里面找啊找,功夫不负有心人,我终于总结出一套在C++builder这个IDE平台上运行的代码。   废话不说,先看效果。![这里写图片描述](http://img.blog.csdn.net/20170807155038987?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obmxhb3hpbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)   如果此图是大家想要的效果,那么往下看。本篇文章我们会实现Form和Panel的圆角设计。   第一步:设置Form属性BordStyle为None;   第二步:在FormCreate的事件中放入如下代码;   void __fastcall TForm1::FormCreat(TObject*Sender)          {        HRGN  hr;        hr = CreateRoundRectRgn(0,0,Width, Height ,20,20);        SetWindowRgn(this->Handle,hr,true);   }   上面的代码并不能保证圆角矩形部分有边框,如果需要边框,还需要在FormPaint中加入如下代码:   void __fastcall TForm1::FormPaint(TObject *Sender)    {        HDC DC;        HPEN Pen,OldPen;        HBRUSH OldBrush;        DC = GetWindowDC(this->Handle);        Pen = CreatePen(PS_SOLID, 1, clGray);        OldPen = (HPEN)SelectObject(DC, Pen); //载入自定义的画笔,保存原画笔        OldBrush =(HBRUSH)SelectObject(DC, GetStockObject(NULL_BRUSH));//载入空画刷,保存原画刷        RoundRect(DC, 0, 0, Width -2, Height -2,21,21); //画边框        SelectObject(DC,OldBrush);//载入原画刷        SelectObject(DC,OldPen); // 载入原画笔        DeleteObject(Pen);        ReleaseDC(Handle, DC);    }    至此,form部分设置圆角矩形已经完成,接下来是Panel部分。    void __fastcall TForm1::Button1Click(TObject *Sender)    {        HRGN  hr;        hr = CreateRoundRectRgn(0,0, Panel1->Width, Panel1->Height ,4,4);        SetWindowRgn(Panel1->Handle,hr,true);        //Panel1->Color = clRed;    }    好了,小弟需要分享的思路到此已经完成。
原创粉丝点击