【问题标题】:Resize a PictureBox in the middle在中间调整图片框的大小
【发布时间】:2018-11-02 16:46:28
【问题描述】:

今天我需要您的帮助来调整 WinForms 中 PictureBox 的大小,同时将其保持在中间。
真正发生的是PictureBox 向左和向下方向变得越来越大!

这是我的代码:

public partial class Form1:Form
{
    private int x = 25;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        x++;
        pictureBox1.Size = new Size(x,x);
    }
}

注意:
我尝试将 Anchor 属性(在我阅读类似文章时)更改为所有内容(无,所有方向...)。但什么都没有改变!

此外,我尝试在每次更改其大小时更改其位置,但这并不是一个顺利的动作!

【问题讨论】:

  • 帮助?任何想法都可能有用... :-)
  • 您是否尝试添加TableLayoutPanel,将Dock 设置为Fill,列50%,自动,50%,行50%,自动,50%,然后将@ 987654327@ 在中间单元格中,并将 Dock 设置为 Fill?
  • 好的,如何更改中间单元格大小?
  • 通过更改PictureBox 大小。
  • 这可不是一帆风顺的!是否可以在一个命令中更改单元格大小?

标签: c# timer size picturebox


【解决方案1】:

看看这种渐进式调整大小是否足够平滑。
PictureBox 将扩展并保持其初始中心位置。
Timer 设置为 .Interval = 100。每个Timer.Tick()PictureBox 的大小都会增加一个量(在本例中为 2 个像素)。

PictureBox.Location 值减少了该数量的一半。
一直玩下去,直到找到您满意的速度和尺寸值。

public partial class Form1 : Form
{
    private int PictureBoxResize = 2;

    public Form1()
    {
        InitializeComponent();
        timer1.Tick += new EventHandler(this.timer1_Tick);
        timer1.Interval = 100;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        pictureBox1.Location = new Point(pictureBox1.Left - (PictureBoxResize / 2), 
                                         pictureBox1.Top - (PictureBoxResize / 2));
        pictureBox1.Size = new Size(pictureBox1.Width + PictureBoxResize, 
                                    pictureBox1.Height + PictureBoxResize);
    }
}

【讨论】:

    【解决方案2】:

    更改pictureBox1 的大小后使用下面的代码

    int righty = this.Width - (pictureBox1.Location.X + pictureBox1.Width);
    int downy = this.Height - (pictureBox1.Location.Y + pictureBox1.Height);
    pictureBox1.Top = (downy + pictureBox1.Top) / 2;
    pictureBox1.Left = (righty + pictureBox1.Left) / 2;
    

    我在我的 WinForm 应用程序中使用它并且它正在工作。 它保持pictureBox1 的四个边在form 的四个边之间的平衡,并将pictureBox1 保持在中间。

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 1970-01-01
      • 2014-10-05
      • 2017-03-18
      • 1970-01-01
      • 2014-09-23
      • 2014-07-21
      • 2021-05-07
      • 2020-07-04
      相关资源
      最近更新 更多