问题描述
如题,找一个只有边框,中间空的控件,想要个框用,没找到,请帮忙
解决方案
解决方案二:
解决方案三:
panel重绘边框groupbox重绘边框privatevoidGBX_SWITCH_Paint(objectsender,PaintEventArgse){e.Graphics.Clear(GBX_SWITCH.BackColor);e.Graphics.DrawString(GBX_SWITCH.Text,GBX_SWITCH.Font,Brushes.Black,12,1);e.Graphics.DrawLine(Pens.DimGray,1,7,8,7);e.Graphics.DrawLine(Pens.DimGray,e.Graphics.MeasureString(GBX_SWITCH.Text,GBX_SWITCH.Font).Width+12,7,GBX_SWITCH.Width-2,7);e.Graphics.DrawLine(Pens.DimGray,1,7,1,GBX_SWITCH.Height-2);e.Graphics.DrawLine(Pens.DimGray,1,GBX_SWITCH.Height-2,GBX_SWITCH.Width-2,GBX_SWITCH.Height-2);e.Graphics.DrawLine(Pens.DimGray,GBX_SWITCH.Width-2,7,GBX_SWITCH.Width-2,GBX_SWITCH.Height-2);}privatevoidPAN_COMP_Paint(objectsender,PaintEventArgse){ControlPaint.DrawBorder(e.Graphics,PAN_COMP.ClientRectangle,Color.DimGray,1,ButtonBorderStyle.Solid,//左边Color.DimGray,1,ButtonBorderStyle.Solid,//上边Color.DimGray,1,ButtonBorderStyle.Solid,//右边Color.DimGray,1,ButtonBorderStyle.Solid);//底边}
解决方案四:
你要这个中空的控件,是不是要装载东西,可以用panel,把背景设置的和主程序界面的一样,边框设置成3D的,就可以装东西了
解决方案五:
引用3楼From_TaiWan的回复:
你要这个中空的控件,是不是要装载东西,可以用panel,把背景设置的和主程序界面的一样,边框设置成3D的,就可以装东西了
需要中空的,只要边框,下面有Graphics画的图,设置backcolor为Transparent都不行
解决方案六:
引用2楼cs1438250的回复:
panel重绘边框groupbox重绘边框
不行,中间不空
解决方案七:
最好直接在Graphic上绘制不行放四个Label,设置为一个像素,组成一个方框就OK了
解决方案八:
GroupBox控件把text属性置为空
解决方案九:
引用6楼assky124的回复:
最好直接在Graphic上绘制不行放四个Label,设置为一个像素,组成一个方框就OK了
Graphic不行,和下面的图干扰,这个方框要活动的,那就成一片了,清也不行,那就把下面整没了,下边的不想每次重画,影响速度
解决方案十:
引用7楼duanzi_peng的回复:
GroupBox控件把text属性置为空
需要透明到下边,下边有图
解决方案十一:
引用9楼jjhhgg1111的回复:
Quote: 引用7楼duanzi_peng的回复:
GroupBox控件把text属性置为空需要透明到下边,下边有图
用gdi+画4条黑线。组成框。。。。
解决方案十二:
winformpanelwebformdiv
解决方案十三:
引用6楼assky124的回复:
最好直接在Graphic上绘制不行放四个Label,设置为一个像素,组成一个方框就OK了
实在不行就得用这方式了,
解决方案十四:
引用9楼jjhhgg1111的回复:
Quote: 引用7楼duanzi_peng的回复:
GroupBox控件把text属性置为空需要透明到下边,下边有图
本身都是透明的。
解决方案十五:
引用13楼duanzi_peng的回复:
本身都是透明的。
有图就不行了
解决方案:
引用12楼jjhhgg1111的回复:
Quote: 引用6楼assky124的回复:
最好直接在Graphic上绘制不行放四个Label,设置为一个像素,组成一个方框就OK了实在不行就得用这方式了,
放4个label不如gdi+画四条线了。。
解决方案:
引用15楼cs1438250的回复:
放4个label不如gdi+画四条线了。。
画线不行,下边有图,乱套了
解决方案:
引用1楼sp1234的回复:貌似我这版本低,usingSystem.Windows.Controls;找不到
解决方案:
既然你都用到了Graphics了g.DrawRectangle()一下很难么如果你要设置透明背景那么你的把控件的Parent属性设置成你下面的那个控件不然控件Parent属性默认是在他对应的容器控件比如Form中所以就算透明他是以他的Parent作为透明透明区域图像显示的是他Parent的背景区域
解决方案:
引用18楼crystal_lz的回复:
既然你都用到了Graphics了g.DrawRectangle()一下很难么如果你要设置透明背景那么你的把控件的Parent属性设置成你下面的那个控件不然控件Parent属性默认是在他对应的容器控件比如Form中所以就算透明他是以他的Parent作为透明透明区域图像显示的是他Parent的背景区域
下面picturebox里画了好多,上面的框是动的,用Graphics就一片了,
解决方案:
找到办法了pictureBox2.Parent=pictureBox1;pictureBox2.BackColor=Color.Transparent;同时设Parent就可以了,但不是容器,是设另外一个pictureBox这个貌似还有点不稳,有时候框移到位置不好,下面图有点变形
解决方案:
label就可以啊,Text为空,BorderStyle为FixedSingle
解决方案:
WinForm没有你说要的那样的控件,搞不定的,WPF到有,你可以引用WPf的Border控件就可以了
解决方案:
创建一个自定义控件指定一下Region不就可以了?比如一个环publicpartialclassRing:UserControl{publicRing(){InitializeComponent();}privatevoidRing_Paint(objectsender,PaintEventArgse){Graphicsg=e.Graphics;g.SmoothingMode=SmoothingMode.AntiAlias;//抗锯齿using(Penpn=newPen(Color.Blue,5f)){g.Clear(Color.White);Rectanglerect=newRectangle(5,5,Width-10,Height-10);g.DrawArc(pn,rect,0,360);GraphicsPathp=newGraphicsPath();p.AddEllipse(0,0,this.Width,this.Height);p.AddEllipse(10,10,this.Width-20,this.Height-20);this.Region=newRegion(p);//这句就是设置圆形的规格区域的}}privatestaticintox,oy;privatevoidRing_MouseDown(objectsender,MouseEventArgse){ox=e.X;oy=e.Y;}privatevoidRing_MouseMove(objectsender,MouseEventArgse){if(e.Button==MouseButtons.Left){Left+=e.X-ox;Top+=e.Y-oy;}}}