当前位置:常识百科馆>游戏数码>电脑>

C#中picturebox控件的使用

电脑 阅读(2.96W)

picturebox控件是C#常用的一个控件,对于我这种图像处理研究方向,picturebox更是必不可少的。在做研究的过程中,我经常会遇到一个问题,就是怎么使得我的picturebox能够随着我处理图像的大小而随之改变,不过这个问题在网上,高手基本上无视,像我这样的新手又很是需要,直到我看别人写的一个程序中才找到我要的答案,所以在这里写出来,希望和我这样的新手能够得到参考。

操作方法

(01)新建一个winform工程,添加一个button和picturebox控件,如图所示

C#中picturebox控件的使用

(02)添加如下代码,该程序是读取我的摄像头,cannys算子处理后在picturebox控件上显示,程序中只是简单使用了EmguCV的函数,不懂的可以见我另外一篇经验EmguCV学习using Emgu.CV;using Emgu.CV.Structure;using Emgu.Util;namespace EEmguCV1{public partial class Form1 : Form{public Form1(){InitializeComponent();}Capture cam;private void btopen_Click(object sender, EventArgs e){cam = new Capture();Application.Idle += new EventHandler(processframe);}private void processframe(object sender, EventArgs arg){Image<Bgr, Byte> frame = cam.QueryFrame();Image<Gray,Byte> Ecanny=frame.Convert<Gray,Byte>();pictureBox1.Image = Ecanny.Canny(new Gray(100), new Gray(60)).Bitmap;}}}

C#中picturebox控件的使用 第2张

(03)很明显picturebox控件只显示了一小部分内容,我想全部显示怎么办,这里我们找到pictureBox控件的属性,找到sizemode项,设置成autosize。

C#中picturebox控件的使用 第3张
C#中picturebox控件的使用 第4张

(04)很显然这种显示也只是一部分,另外一部分显然是被窗体阻挡啦,所以我们需要把窗体也设置下。找到autosize将flase改成ture即可。

C#中picturebox控件的使用 第5张
C#中picturebox控件的使用 第6张

(05)不过这样有点不方便,需要之前设置,怎么能够在打开图像后根据实际情况自己调节模式呢?我这里添加了一个菜单栏,依此键入如图所示的值,并添加如下代码。private void normalToolStripMenuItem_Click(object sender, EventArgs e){pictureBox1.SizeMode = PictureBoxSizeMode.Normal;}private void sToolStripMenuItem_Click(object sender, EventArgs e){pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;}private void autosizeToolStripMenuItem_Click(object sender, EventArgs e){pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;}运行效果如图所示。

C#中picturebox控件的使用 第7张
C#中picturebox控件的使用 第8张
C#中picturebox控件的使用 第9张
C#中picturebox控件的使用 第10张

特别提示

上述程序都是在VS2008和EmguCV 2.3版本运行,如果不一致,可能运行结果不同。