WinForm 自定义控件大小,等比例缩放

自定义,修改WinForm内控件大小 随Form 大小变化等比例缩放 

    public partial class Form1 : Form
    {
        Boolean flag = true; //定义一个标签,更换全屏图标
        int w;//定义当前窗体的宽度
        int h;//定义当前窗体的高度

        public Form1()
        {
            InitializeComponent();
            //拿到屏幕的长和宽
            w = System.Windows.Forms.SystemInformation.VirtualScreen.Width;
            h = System.Windows.Forms.SystemInformation.VirtualScreen.Height;
            setTag(this);
        }

        private void setTag(Control cons)
        {
            foreach (Control con in cons.Controls)
            {
                con.Tag = con.Width + ";" + con.Height + ";" + con.Left + ";" + con.Top + ";" + con.Font.Size;
                if (con.Controls.Count > 0)
                {
                    setTag(con);
                }
            }
        }

        private void setControls(float newx, float newy, Control cons)
        {
            //遍历窗体中的控件,重新设置控件的值
            foreach (Control con in cons.Controls)
            {
                //获取控件的Tag属性值,并分割后存储字符串数组
                if (con.Tag != null)
                {
                    string[] mytag = con.Tag.ToString().Split(new char[] { ';' });
                    //根据窗体缩放的比例确定控件的值
                    con.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * newx);//宽度
                    con.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * newy);//高度
                    con.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * newx);//左边距
                    con.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * newy);//顶边距
                    //修改字体也随 窗体大小改变而改变
                    //Single currentSize = System.Convert.ToSingle(mytag[4]) * newy;//字体大小
                    //con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
                    if (con.Controls.Count > 0)
                    {
                        setControls(newx, newy, con);
                    }
                }
            }
        }
        
        //重绘大小
        private void Form1_Resize(object sender, EventArgs e)
        {
            float newx = (this.Width) / w;
            float newy = (this.Height) / h;
            setControls(newx, newy, this);
        }

        
        //全屏按钮
        //修改按钮背景图片
        private void button1_Click(object sender, EventArgs e)
        {
            ipaddress = textBox1.Text;
            if (flag)
            {
                //MessageBox.Show("" + w + " " + h);
                //全屏显示
                this.FindForm().ClientSize = new Size(w, h);

                //取消底部导航栏
                this.FindForm().FormBorderStyle = FormBorderStyle.None;
                this.FindForm().Location = new System.Drawing.Point(0, 0);
                button1.BackgroundImage = new Bitmap(Properties.Resources.unfull);
                flag = false;

            }
            else
            {
                //取消全屏
                this.FindForm().FormBorderStyle = FormBorderStyle.None;
                this.FindForm().Location = new System.Drawing.Point(0, 0);
                this.FindForm().FormBorderStyle = FormBorderStyle.FixedSingle;
                button1.BackgroundImage = new Bitmap(Properties.Resources.full);
                flag = true;
            }
        }
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: WinForm圆形控件是指在Windows Form应用程序中使用的可视化控件,具有圆形形状的外观。WinForm圆形控件可以用于美化用户界面,提高交互性和可操作性。它通常用于显示状态指示器、按钮、标志等。 实现WinForm圆形控件的方法有很多种,例如使用自定义控件或者使用已有控件,并通过修改其外观来改变其形状。常见的方法是使用GDI+来绘制圆形。GDI+是一种绘图API,可用于在Windows Form应用程序中绘制各种图形和图像。利用GDI+,可以创建自定义形状和风格的控件。 在绘制WinForm圆形控件时,需要定义圆的位置、半径、颜色等属性。可以通过重写控件的OnPaint方法来绘制圆形,并使用Brush、Pen、Graphics等类来控制颜色和线条样式。在控件中添加鼠标事件,可实现与用户交互的功能。 WinForm圆形控件的实现方法简单且实用,可用于各种类型的Windows Form应用程序,从简单的状态指示器到复杂的动画效果。它可以让用户在使用应用程序时获得更好的视觉体验和更好的交互性,是一种非常实用的控件。 ### 回答2: Winform圆形控件,顾名思义,就是将一个普通的控件按照圆形的形状进行显示和操作。这种控件在界面设计中十分常见,可以美化程序的外观效果。那么如何实现Winform圆形控件呢? 首先,可以使用Graphics类中的DrawEllipse()方法来绘制一个圆形,并设置控件的背景为透明色。这样就能在原控件上绘制出一个圆形的图案。其次,可以自定义控件的行为,修改鼠标的点击事件,检测控件是否被点击。同时,需要将控件的Region属性也设置为一个圆形区域,这样才能进行圆形的操作。 当然,这里还需要考虑到控件的缩放问题。当控件随窗口大小进行缩放时,需要重新计算控件的位置和大小。此外,也可以通过使用矢量图形,来实现控件的无限缩放,使得控件的外观没有锯齿和失真现象。 Winform圆形控件的实现需要借助于.NET框架提供的绘图和控件操作的类库。开发者可以根据自己的需求,对控件的样式和行为进行自定义和调整,以达到最佳的用户体验效果。 ### 回答3: Winform圆形控件是Winform编程中常见的UI控件之一。它可以显示一个圆形的图标或者是一个纯色的圆形,用于美化程序的界面设计,并且可以通过代码设置圆形的颜色、边框、半径等属性,达到定制化的效果。 使用Winform圆形控件的好处在于,可以避免在程序中使用图片或者图片按钮等比较复杂的UI控件。这不仅降低了程序的资源开销,而且也可以减小程序的体积,提高程序运行的效率。 在使用Winform圆形控件时,可以通过绘图技术在代码中实现其绘制方式。比如可以在控件的Paint事件中使用Graphics画布绘制一个圆形,然后通过设置控件的背景为透明,使得该圆形控件在程序中呈现为圆形的形态。同时,通过在代码中设置该控件的属性,可以调整其形态大小以及显示内容。 总结来说,Winform圆形控件是Winform中常用的UI控件之一,具有方便、简便、美观、有效的特点。它可以通过代码绘制、属性调整等方式来定制圆形控件,帮助程序设计者实现更好的用户界面设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值