精华内容
下载资源
问答
  • VB 控件随窗体自动调整大小,像窗口中的ListBox、Image、FileListBox、VB.Frame控件等,都可以随窗口的大小变化而变化,当用户拖动改变窗口大小时,这些控件大小也会随之改变,这个功能的实现得益于自定义函数Form...
  • qt 窗口控件自动调整大小

    千次阅读 2016-05-21 10:40:00
    /***********************... * qt 窗口控件自动调整大小 * * 在写gui的时候,希望窗口能够自动调整大小,这样就不许要手动调整。 * qt creator中就集成了这种方法,在qt中设置即可。 * 本文参考链接: ...
    /********************************************************************
     *                qt 窗口控件自动调整大小 
     *
     *    在写gui的时候,希望窗口能够自动调整大小,这样就不许要手动调整。
     * qt creator中就集成了这种方法,在qt中设置即可。
     * 本文参考链接: 
     *      http://www.cnblogs.com/emouse/archive/2013/05/19/3087708.html
     *
     *                                          Tony, 2016-5-21, Shenzhen
     ********************************************************************/
    
    按照参考链接操作:
      1.在空白处右键,选择 Lay Out -> Lay Out in a Form Layout.   2.选中需要自动调整的控件,设置器布局方式为水平/垂直/栅格。调整部件到希望的位置。
      3.设置sizePolicy为Expanding
    例如groupBox,根据右边的属性中设置。 sizePolicy
    ->Horizontal Policy->Expanding sizePolicy->Vertical Policy->Expanding 再将设置的这些控件放入gridLayout等布局中即可。
    软件上可以使用widget.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    转载于:https://www.cnblogs.com/helloworldtoyou/p/5514225.html

    展开全文
  • 易语言自动调节控件大小v2.0源码,自动调节控件大小v2.0,lpEnum记住,恢复位置,记住位置,hwnd已存在,清除记忆,CoInitialize,CoUninitialize,API_GetClientRect,API_EnumChildWindows,API_ScreenToClient,API_GetParent...
  • C# winfrom 自动调整控件大小

    千次阅读 2019-07-06 17:12:30
    最近公司要重构一个项目,把C++写的桌面应用改为winfrom,而此时我遇到一个问题就是winfrom控件自动放大和缩小,就是根据窗口的大小来改变winfrom窗口和容器内的控件大小。在网上找了很多得到的效果并不如意,...

    最近公司要重构一个项目,把C++写的桌面应用改为winfrom,而此时我遇到一个问题就是winfrom控件的自动放大和缩小,就是根据窗口的大小来改变winfrom窗口和容器内的控件的大小。 在网上找了很多得到的效果并不如意,大多数都在介绍控件中的Anchor属性,但是这个属性会受各方面的影响,比如说容器,并不能达到自己想要的效果,后来在网上找到一段代码基本可以完成某些部分的放大和缩小,但是还是会出现一些问题:

    1. 当窗口最小化后重新打开窗口就会发生混乱
    2. 因为每个计算结果都是向上取整,也就是只要有小数点就会加一导致放大缩小后几次控件就会挤在一
    3. 如果将控件放在容器中就会发生混乱


    为了解决这些问题,我对代码进行了部分修改如下所示:

    注意!使用该类的时候每个控件的Anchor属性必须为None,AutoSize属性也必须为false,绝对不能设置MinimumSize和MaximumSize属性,否则窗口会在一定大小不再增大或缩小。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Drawing;
    
    
    
    namespace MainWindows
    {
        class AutoSizeFormClass
        {
            /// <summary>
            /// 声明结构 记录控件位置和大小
            /// </summary>
            public struct ControlRect
            {
                public string name;
                public float Left;
                public float Top;
                public float Width;
                public float Height;
                public float Size;
            }
    
            
    
            public List<ControlRect> _oldCtrl = new List<ControlRect>();
            private int _ctrlNo = 0;
            ControlRect decimals;
    
            public void RenewControlRect(Control mForm)
            {
                //如果控件集合对象_oldCtrl不存在则将其添加,如果不添加首先无法找到主窗口
                //也就无法开始遍历
                ControlRect cR;
                cR.name = mForm.Name;
                cR.Left = mForm.Left;
                cR.Top = mForm.Top;
                cR.Width = mForm.Width;
                cR.Height = mForm.Height;
                cR.Size = mForm.Font.Size;
                _oldCtrl.Add(cR);
    
                AddControl(mForm);
                
    
                _ctrlNo = 1;
            }
            
    
            private void AddControl(Control ctrl)
            {
                foreach (Control c in ctrl.Controls)
                {
                    ControlRect cR;
                    cR.name = c.Name;
                    cR.Left = c.Left;
                    cR.Top = c.Top;
                    cR.Width = c.Width;
                    cR.Height = c.Height;
                    cR.Size = c.Font.Size;
                    _oldCtrl.Add(cR);
                    // 控件可能嵌套子控件
                    if (c.Controls.Count > 0)
                        AddControl(c);
                }
            }
    
            public void ControlAutoSize(Control mForm)
            {      
    
                _ctrlNo = 1;
                /*计算宽度比率*/
                float wScale = (float)mForm.Width / _oldCtrl[0].Width;
                /*计算高度比率*/
                float hScale = (float)mForm.Height / _oldCtrl[0].Height;
                AutoScaleControl(mForm, wScale, hScale);
            }
    
            private void AutoScaleControl(Control mForm, float wScale, float hScale)
            {
                float ctrlLeft, ctrlTop, ctrlWidth, ctrlHeight;
                float ctrlFontSize, hSize, wSize;
                List<ControlRect> Ctrl = new List<ControlRect>();
                foreach (Control c in mForm.Controls)
                {
                    //在_oldCtrl 中查询出控件名称相同的控件,并返回对象
                    ControlRect shortDigits = _oldCtrl.Where((p) => p.name == c.Name).ToList().FirstOrDefault();
    
                    
                    //获取左边框的长度
                   ctrlLeft = shortDigits.Left;
                    //获取上边框的长度
                   ctrlTop = shortDigits.Top;
                    //获取宽度
                   ctrlWidth = shortDigits.Width;
                    //获取高度
                   ctrlHeight = shortDigits.Height;
                    //获取字体大小
                   ctrlFontSize = shortDigits.Size;
    
                    //通过获取的比率相乘计算出要显示的x,y轴
                   c.Left = (int)Math.Round((ctrlLeft * wScale));
                    if(c.Left< 0) {
                        c.Left = 0;
                    }
                    c.Top = (int)Math.Round((ctrlTop * hScale));
                    if(c.Top < 0 ) {
                        c.Top = 0;
                    }
                    //保存计算结果后的坐标和大小,当下次进行计算是使用该浮点型进行计算
                    //确保控件不会错乱
                   
                    
    
                    //设置高度和宽度
                    c.Width = (int)Math.Round((ctrlWidth * wScale));
                    c.Height = (int)Math.Round((ctrlHeight * hScale));
    
                    //通过比率获取放大或缩小后的字体大小并进行设置
                    wSize = ctrlFontSize * wScale;
                    hSize = ctrlFontSize * hScale;
                    if (hSize < 7)
                    {
                        hSize = 7;
                    }
                    if (wSize < 7)
                    {
                        wSize = 7;
                    }
                    c.Font = new Font(c.Font.Name, Math.Min(hSize, wSize), c.Font.Style, c.Font.Unit);
    
                    _ctrlNo++;
    
                    // 先缩放控件本身 再缩放子控件
                    if (c.Controls.Count > 0)
                    {
                        AutoScaleControl(c, wScale, hScale);
                    }
    
                    shortDigits.Top = ctrlTop * hScale;
                    shortDigits.Left = ctrlTop * wScale;
                    shortDigits.Width = ctrlTop * wScale;
                    shortDigits.Height = ctrlTop * hScale;
                    //Ctrl.Add(shortDigits);
                }
                
            }
        }
    }
    

     

    调用方式

    调用方式如下所示:

    注意!一定要用如下格式或者类似如下格式进行调用,否则出现错误

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace MainWindows
    {
        public partial class Form1 : Form
        {
            AutoSizeFormClass asc = new AutoSizeFormClass();
    
            public Form1()
            {
                InitializeComponent();
                asc.RenewControlRect(this);
            }
    
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                asc.ControlAutoSize(this);  
            }
            
        }
    }
    

     

    展开全文
  • WPF 界面 实现控件随着界面大小进行缩放,按住Ctrl按钮,然后混动混轮,就可以实现缩放了,控件比例和布局不变,会产生滚动条。
  • 作用是在运行时刻自动对其它可视控件进行动态的位置/大小调整.这个控件实现的功能和VB.Net的窗体布局功能类似....例如―HW‖表示自动调整高度和宽度.TL的优先级高于HW,如果Tag同时包含T和H,则仅T有效.
  • mfc根据窗口大小自动调整所有控件大小,自己编的,希望对你有用
  • winform 运行时控件更改大小,VB.net 和C# 两种语言实现。注意,例子中picture控件的sizemode需设置成strech
  • 需求是:需要使控件在设计的时候,可以自适应所放的容器,实现自动缩放的功能,比如,我放到一个100*200的区域,ActiveX控件自动缩放一样的大小进行填充。小弟是刚学mfc,希望有大神指导一二,帮帮忙,谢谢。能不...
  • 摘要:C#源码,菜单窗体,控件 C#控件随窗体大小自动调整,如上图所示,在C#窗体中的按钮控件,其长度会随着窗口的拉大而自动调整,当窗体变小时自身会缩短,总会适应窗口的不断变化。
  • C#窗体设计:自动调整控件大小

    千次阅读 2018-09-29 14:38:59
    根据窗体大小调整控件大小,添加一下代码:  private void setControls(float newx, float newy, Control cons)  {  //遍历窗体中的控件,重新设置控件的值  foreach (Control con in cons....
    1. 新建一个C#应用程序,应用程序命名为Change

      C#窗体设计:[9]自动调整控件大小

    2. 窗体界面设计如下

      C#窗体设计:[9]自动调整控件大小

    3. 双击窗体添加Load()函数,函数中添加一下代码:

      private void Form1_Load(object sender, EventArgs e)

              {

                  this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件

       

                  X = this.Width;//获取窗体的宽度

                  Y = this.Height;//获取窗体的高度

                  setTag(this);//调用方法

              }

      C#窗体设计:[9]自动调整控件大小

    4. 获取控件的width、height、left、top、字体大小的值,添加一下代码:

      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);

                  }

              }

      C#窗体设计:[9]自动调整控件大小

    5. 根据窗体大小调整控件大小,添加一下代码:

              private void setControls(float newx, float newy, Control cons)

              {

                  //遍历窗体中的控件,重新设置控件的值

                  foreach (Control con in cons.Controls)

                  {

                      string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组

                      float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度

                      con.Width = (int)a;//宽度

                      a = Convert.ToSingle(mytag[1]) * newy;//高度

                      con.Height = (int)(a);

                      a = Convert.ToSingle(mytag[2]) * newx;//左边距离

                      con.Left = (int)(a);

                      a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离

                      con.Top = (int)(a);

                      Single currentSize = 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);

                      }

                  }

              }

      C#窗体设计:[9]自动调整控件大小

    6. 对窗体添加Resize()函数

      void Form1_Resize(object sender, EventArgs e)

              {

                  float newx = (this.Width) / X; //窗体宽度缩放比例

                  float newy = this.Height / Y;//窗体高度缩放比例

                  setControls(newx, newy, this);//随窗体改变控件大小

                  this.Text = this.Width.ToString() + " " + this.Height.ToString();//窗体标题栏文本

              }

      C#窗体设计:[9]自动调整控件大小

    7. 程序运行如下:

      C#窗体设计:[9]自动调整控件大小步骤阅读

      C#窗体设计:[9]自动调整控件大小

    展开全文
  • C# winform 控件位置与大小自动调整c#中使控件大小可以根据窗口自动调整位置与大有两种方式 1.设置Anchor或Dock属性  2.根据窗口大小百分比调整控件

    C# winform 控件位置与大小的自动调整

    c#中使控件的大小可以根据窗口自动调整位置与大有两种方式

    1.设置Anchor或Dock属性

      Anchor用于设置控件到边缘的距离保持不变,主要用来保证各控件的相对布局整齐,这里以button为例,正确的设置方法如下
    button Anchor设置
    图片拉伸后控件大小与布局不变
    拉伸后的效果

      Dock用于设置控件附着于form边缘,正确设置如下(这里需要注意,设置控件的Dock的顺序对结果又很大影响,本例子中先设置上下,然后左右,最后中间,具体设置顺序要看需求)
    buttor Dock设置

    图片拉伸后空间的布局不变,大小随着窗体大小而改变
    拉伸后的效果![](https://img-blog.csdn.net/20170510221523835?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXlfY2xlYXJfbWluZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    2.控件根据窗体大小百分比调整(网上看到的)

    这种方式相当于把整个窗体当做一个图片进行缩放,较为美观。

    双击窗体进入编辑form1的load函数

    private void Form1_Load(object sender, EventArgs e)
    {
    this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件
    X = this.Width;//获取窗体的宽度
    Y = this.Height;//获取窗体的高度
    setTag(this);//调用方法
    }

    自己写方法:

        float X, Y;
        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)
            {
                string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组
                float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度
                con.Width = (int)a;//宽度
                a = Convert.ToSingle(mytag[1]) * newy;//高度
                con.Height = (int)(a);
                a = Convert.ToSingle(mytag[2]) * newx;//左边距离
                con.Left = (int)(a);
                a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离
                con.Top = (int)(a);
                Single currentSize = 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);
                }
            }
        }
    

    form的load添加

    this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件
    X = this.Width;//获取窗体的宽度
    Y = this.Height;//获取窗体的高度
    setTag(this);//调用方法

    在form1的方法中双击Resize写入

    private void Form1_Resize(object sender, EventArgs e)
    {
    float newx = (this.Width) / X; //窗体宽度缩放比例
    float newy = this.Height / Y;//窗体高度缩放比例
    setControls(newx, newy, this);//随窗体改变控件大小
    this.Text = this.Width.ToString() + ” ” + this.Height.ToString();//窗体标题栏文本
    }
    拉伸前

    纵向压缩

    纵向拉伸

    源程序

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace 控件百分比调整大小
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    float X, Y;
    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)
    {
    string[] mytag = con.Tag.ToString().Split(new char[] { ‘:’ });//获取控件的Tag属性值,并分割后存储字符串数组
    float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度
    con.Width = (int)a;//宽度
    a = Convert.ToSingle(mytag[1]) * newy;//高度
    con.Height = (int)(a);
    a = Convert.ToSingle(mytag[2]) * newx;//左边距离
    con.Left = (int)(a);
    a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离
    con.Top = (int)(a);
    Single currentSize = 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_Load(object sender, EventArgs e)
    {
    this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件
    X = this.Width;//获取窗体的宽度
    Y = this.Height;//获取窗体的高度
    setTag(this);//调用方法
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
    float newx = (this.Width) / X; //窗体宽度缩放比例
    float newy = this.Height / Y;//窗体高度缩放比例
    setControls(newx, newy, this);//随窗体改变控件大小

        }
    }
    

    }

    展开全文
  • C#中根据窗口分辨率大小自动调整控件位置和大小的函数
  • 易语言自动调节控件大小模块源码,自动调节控件大小模块,lpEnum记住,lpEnum恢复,恢复位置,记住位置,API_GetClientRect,API_EnumChildWindows,API_ScreenToClient,API_GetParent,API_GetWindowRect,API_MoveWindow
  • 易语言源码易语言自动调节控件大小模块源码.rar
  • 易语言源码易语言自动调节控件大小v2.0源码.rar
  • MFC控件自适应调整大小

    千次阅读 2019-04-27 18:39:34
    MFC 所有控件随窗口大小自适应 - 阿强的一亩三分地,一分耕耘一分收获 - CSDN博客 ...MFC 控件随窗口尺寸变化自动调整位置及大小 - weixinhum - CSDN博客 https://blog.csdn.net/weixinhum/article/details/2589...
  • 改代码实现了窗口中控件大小和位置随着窗口大小的改变而自动调整的功能。特别需要注意的是如果是调整Combo Box控件控件的高度一般不需要改变的,如果在调整窗口时改变了控件高度,有可能在新的位置不能对Combo Box...
  • delphi自动根据窗体大小缩放控件,有别人一般的方法
  • C#控件随着窗体自动调整大小 #1.创建一个类 class #2.在Form_Load中添加执行语句 缺点:无法自动调整容器中的窗体,暂未找到合适的解决方法! 1. class Resize { private Form _form; public Resize(Form form) { ...
  • mfc 控件大小 调整大小 This article describes a simple method to resize a control at runtime. It includes ready-to-use source code and a complete sample demonstration application. We'll a...
  • C#,控件大小、字体随界面大小变化、分辨率变化而自动调整
  • C# 实现动态创建控件 调整大小 拖动 自适应窗体 可以进行微调,需要创建之后进行绑定操作。
  • 在MFC对话框编程过程中经常会出现这样一个问题,在给窗口做尺度变换后,原来的控件位置和大小并没有跟着变,导致界面看起来极不协调,如下: 要解决这个问题,可在类结构体中声明一个CRect变量以存储之前窗体大小...
  • 易语言自动调节控件大小模块源码
  • 封装的C++类,可以自动调整窗口上控件的位置,大小,随着窗口的该表而改变!
  • c#语言 控件大小以及字体随窗口大小以及字体随窗口改变而自动缩放
  • 方法二:能实现控件位置与控件字体的大小自动适应。 方法一代码: 添加一个适应类: using System.Collections.Generic; using System.Windows.Forms; namespace WindowForm { public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,970
精华内容 20,788
关键字:

控件自动调整大小