使用两种forms缩放
我的项目中有多个表单。 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) 使用PictureBox放大图片,以便使用鼠标滚轮进行缩放
更好的方式是事件:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var form2 = new Form2(); form2.TrackBarMoved += new Action(ZoomPictureBox); form2.ShowDialog(); form2.TrackBarMoved -= new Action (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 TrackBarMoved; private void trackBar1_Scroll(object sender, EventArgs e) { TrackBarMoved(trackBar1.Value); } }
允许其他类修改表单的内部控件被认为是糟糕的设计。 表单应该负责所有组件。 你不应该公开任何内部控制。 对于子表单来说,引用父表单也被认为是不好的做法。
解决这个问题的适当方法是通过事件。 子表单Form2
应该定义一个公共事件:
public event Action TrackBarMoved;
Form2
可以在移动轨迹栏时触发该事件,并作为参数传递轨迹栏的位置(如果有意义传递其他内容,例如缩放级别,或其他任何你想要的,那也没关系)。
Form1
可以在创建From2
时订阅该事件,并根据From2
更改图片上的缩放(内部,从Form1
内)。
上述就是C#学习教程:使用两种forms缩放分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1003796.html