就现在来说,使用C++builder开发windows编程的人数逐渐变少,由于公司坚持使用这个IDE工具,我也只好使用他。最近看见公司客户端登录界面感觉十分不爽,准备重做,决定参考qq界面,做出圆角矩形的,于是乎就在论坛里面找啊找,功夫不负有心人,我终于总结出一套在C++builder这个IDE平台上运行的代码。
废话不说,先看效果。
如果此图是大家想要的效果,那么往下看。本篇文章我们会实现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;
}
好了,小弟需要分享的思路到此已经完成。
winForm圆角矩形及C++builderForm圆角设计
最新推荐文章于 2023-12-26 19:23:47 发布