编程语言
首页 > 编程语言> > c# – 使用两种形式进行缩放

c# – 使用两种形式进行缩放

作者:互联网

我的项目中有多个表单. Form1包含一个显示jpeg的pictureBox.在Form2中,我有一个trackBar,我想控制Form1中图像的缩放级别.为了简单起见,我只需要2或3个缩放级别.我在Designer视图中将pictureBox设置为public.但是,当我尝试在Form2中引用pictureBox时,它表示它不存在.下面是我用来在Form1中调用Form2的代码

Form2 dataWindow = new Form2();
dataWindow.ShowDialog();

总之,我需要帮助的两件事是:

1)从单独的表单更改pictureBox1的属性.
2)创建简单的缩放公式.

解决方法:

1)将form1引用传递给form2的构造函数:

Form2 dataWindow = new Form2(this);
dataWindow.Show();

private form1 as Form1;
public Form2(Form1 frm1)
{
  form1 = frm1;
}

然后在Form2s TrackBar_Scroll事件中通过私有成员变量form1引用PictureBox:form1.PictureBox1.Property

2)Magnify your pictures using a PictureBox so that you can zoom with the Mouse Wheel

更好的方式是事件:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var form2 = new Form2();
        form2.TrackBarMoved += new Action<int>(ZoomPictureBox);
        form2.ShowDialog();
        form2.TrackBarMoved -= new Action<int>(ZoomPictureBox);

    }

    private void ZoomPictureBox(int zoomFactor)
    {
        pictureBox1.Width = 100 * zoomFactor;
        pictureBox1.Height = 100 * zoomFactor;
    }
}


public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public event Action<int> TrackBarMoved;

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
        TrackBarMoved(trackBar1.Value);
    }
}

标签:c,zoom,picturebox,trackbar
来源: https://codeday.me/bug/20190620/1246749.html