有没有只有边框,中间空的控件

心匪石不可转 2015-12-16 10:00:22
如题,找一个只有边框,中间空的控件,想要个框用,没找到,请帮忙
...全文
404 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-12-18
  • 打赏
  • 举报
回复
创建一个自定义控件 指定一下 Region 不就可以了? 比如一个环
    public partial class Ring : UserControl
    {
        public Ring()
        {
            InitializeComponent();
        }

        private void Ring_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias; //抗锯齿
            using(Pen pn = new Pen(Color.Blue, 5f))
            {
                g.Clear(Color.White);
                Rectangle rect = new Rectangle(5, 5, Width - 10, Height - 10);
                g.DrawArc(pn, rect, 0, 360);

                GraphicsPath p = new GraphicsPath();
                p.AddEllipse(0, 0, this.Width, this.Height);
                p.AddEllipse(10, 10, this.Width - 20, this.Height - 20);
                this.Region = new Region(p);//这句就是设置圆形的规格区域的
            }
        }

        private static int ox, oy;
        private void Ring_MouseDown(object sender, MouseEventArgs e)
        {
            ox = e.X;
            oy = e.Y;
        }

        private void Ring_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Left += e.X - ox;
                Top += e.Y - oy;
            }
        }
    }
本拉灯 2015-12-18
  • 打赏
  • 举报
回复
WinForm没有你说要的那样的控件,搞不定的, WPF到有,你可以引用WPf的Border控件就可以了
hejie13250 2015-12-18
  • 打赏
  • 举报
回复
label就可以啊,Text为空,BorderStyle为FixedSingle
心匪石不可转 2015-12-18
  • 打赏
  • 举报
回复
找到办法了 pictureBox2.Parent = pictureBox1; pictureBox2.BackColor = Color.Transparent; 同时设Parent 就可以了,但不是容器,是设另外一个pictureBox 这个貌似还有点不稳,有时候框移到位置不好,下面图有点变形
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
https://msdn.microsoft.com/zh-cn/library/system.windows.controls.border(v=vs.100).aspx
貌似我这版本低,using System.Windows.Controls;找不到
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 15 楼 cs1438250 的回复:
放4个label不如gdi+画四条线了。。
画线不行,下边有图,乱套了
cs1438250 2015-12-17
  • 打赏
  • 举报
回复
引用 12 楼 jjhhgg1111 的回复:
[quote=引用 6 楼 assky124 的回复:] 最好直接在Graphic上绘制 不行放四个Label,设置为一个像素,组成一个方框就OK了
实在不行就得用这方式了,[/quote] 放4个label不如gdi+画四条线了。。
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 13 楼 duanzi_peng 的回复:
本身都是透明的。
有图就不行了
  • 打赏
  • 举报
回复
引用 9 楼 jjhhgg1111 的回复:
[quote=引用 7 楼 duanzi_peng 的回复:] GroupBox控件 把text 属性置为空
需要透明到下边,下边有图[/quote] 本身都是透明的。
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 6 楼 assky124 的回复:
最好直接在Graphic上绘制 不行放四个Label,设置为一个像素,组成一个方框就OK了
实在不行就得用这方式了,
正怒月神 2015-12-17
  • 打赏
  • 举报
回复
winform panel webform div
cs1438250 2015-12-17
  • 打赏
  • 举报
回复
引用 9 楼 jjhhgg1111 的回复:
[quote=引用 7 楼 duanzi_peng 的回复:] GroupBox控件 把text 属性置为空
需要透明到下边,下边有图[/quote] 用gdi+ 画4条黑线。组成框。。。。
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
GroupBox控件 把text 属性置为空
需要透明到下边,下边有图
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 6 楼 assky124 的回复:
最好直接在Graphic上绘制 不行放四个Label,设置为一个像素,组成一个方框就OK了
Graphic不行,和下面的图干扰,这个方框要活动的,那就成一片了,清也不行,那就把下面整没了,下边的不想每次重画,影响速度
  • 打赏
  • 举报
回复
GroupBox控件 把text 属性置为空
assky124 2015-12-17
  • 打赏
  • 举报
回复
最好直接在Graphic上绘制 不行放四个Label,设置为一个像素,组成一个方框就OK了
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 2 楼 cs1438250 的回复:
panel 重绘边框 groupbox重绘边框
不行,中间不空
心匪石不可转 2015-12-17
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
你要这个中空的控件,是不是要装载东西,可以用panel,把背景设置的和主程序界面的一样,边框设置成3D的,就可以装东西了
需要中空的,只要边框,下面有Graphics画的图,设置backcolor为Transparent都不行
秋的红果实 2015-12-17
  • 打赏
  • 举报
回复
你要这个中空的控件,是不是要装载东西,可以用panel,把背景设置的和主程序界面的一样,边框设置成3D的,就可以装东西了
cs1438250 2015-12-17
  • 打赏
  • 举报
回复
panel 重绘边框 groupbox重绘边框 private void GBX_SWITCH_Paint(object sender, PaintEventArgs e) { 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); } private void PAN_COMP_Paint(object sender, PaintEventArgs e) { 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);//底边 }
加载更多回复(3)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧