我需要显示不同的因素对于传输损耗的影响的图像,想法是使用一个窗体,当从不同的窗体跳转过来后显示不同的图像。这里需要用到两个功能:①在不同的窗口之间进行参数的传递;②使用一个picturebox控件显示不同的图像(添加资源文件进行动态调用)。
1. 在资源文件添加图片
在解决资源管理器中添加一个资源文件,然后将图片添加到资源文件中(选择添加现有文件)。
在显示窗口中添加 PictureBox控件 用于显示图片,图片显示的代码是:
pictureBox.Image =Resource1.XXX;
2. 多窗体之间的参数传递及图像显示
我这里用到窗体间参数的办法是添加一个公共类,包含一个静态变量,用于各个窗口之间的数值传递。
①添加公共类
在解决方案资源管理器中添加类:Data.cs,在类中写入一个静态变量passData:
class Data
{
public static string passData;
}
②在传输参数的一边进行设置
举其中一个例子,要实现的功能是当在Form5中,选中“建筑物高度”,点“确定”后在Form7中显示图片3;选中“建筑物间的距离”,点“确定”后在Form7中显示图片4。
Form5窗口设计:
在“确定”按钮的click事件中写入参数设置的代码:
private void Btn_Yes_Click(object sender, EventArgs e)
{
if (Rad_hb.Checked)
{
Data.passData = "3"; //对Data类中的静态变量passData进行赋值
var frm = new Form7();
frm.ShowDialog();
}
else if (Rad_b.Checked)
{
Data.passData = "4";
var frm =new Form7();
frm.ShowDialog();
}
}
③在图像显示的窗口处接收传输的参数,然后进行图片显示
在Form7的Load事件中写入代码:
private void Form7_Load(object sender, EventArgs e)
{
int i = Convert.ToInt32(Data.passData);
//读取Data类中静态变量passData的值,并转化为int类型
switch(i) //显示对应的图像
{
case 0:
pictureBox.Image =Resource1.Hata1;
break;
case 1:
pictureBox.Image =Resource1.Hata2;
break;
case 2:
pictureBox.Image =Resource1.CCIR;
break;
case 3:
pictureBox.Image = Resource1.WIM_Hb;
break;
case 4:
pictureBox.Image =Resource1.WIM_b;
break;
}
}
3. 关于图片显示的调整
可以对 PictureBox 控件的 SizeMode属性进行设置:
zoom ——图片的长宽比例会保持不变;
atuosize ——Picturebox的大小会随着图片的大小而更改;
ScretchImage —— 强制使图片的大小跟picturebox的大小相同,图片的长宽比例会发生改变;
CenterImage —— 图片大小不变,图片在picturebox中居中显示,如果图片大小超过picturebox大小,图片会显示不全。
4.运行结果
目前显示的比较丑,后面再进行改进。