第5章图形图像编程详解.ppt
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * 5.9.5 存取位图文件 【例5.30】为上例增加存取位图文件功能。 把MenuStrip控件放到主窗体中。增加顶级菜单项:文件。为“文件”顶级菜单项的弹出菜单增加菜单项:新建、打开、另存为、退出。 为主窗体菜单“文件|新建”菜单项增加单击事件处理函数如下: private void 新建ToolStripMenuItem_Click (object sender, EventArgs e) { bitG.Clear(Color.White);//用白色清空位图对象bitG pictureBox1.Image=bits; } //pictureBox1显示用白色清空位图对象bitG 放OpenFileDialog控件到窗体。菜单“文件|打开”菜单项单击事件处理函数如下: private void 打开ToolStripMenuItem_Click (object sender, EventArgs e) { if(openFileDialog1.ShowDialog(this)== DialogResult.OK) { bits.Dispose(); //撤销bitG所引用的对象 //建立指定文件的新位图对象 bits=new Bitmap(openFileDialog1.FileName); //得到位图对象使用的Graphics类对象 bitG=Graphics.FromImage(bits); pictureBox1.Image=bits; } } 放SaveFileDialog控件到窗体。菜单“文件|另存为”菜单项单击事件处理函数如下: private void 另存为ToolStripMenuItem_Click (object sender, EventArgs e) { if(saveFileDialog1.ShowDialog(this)== DialogResult.OK) { string s=saveFileDialog1.FileName+.bmp; bits.Save(s, System.Drawing.Imaging.ImageFormat.Bmp); } } //也可以存为其他格式,例如:Jpg,Gif等。请读者试一下。 为主窗体菜单“文件|退出”菜单项增加单击事件处理函数如下: private void 退出ToolStripMenuItem_Click (object sender, EventArgs e) { Close(); } 运行,在PictureBox控件拖动鼠标可以画线。存所画的图形到文件,再重新读出该文件,看是否正常运行。检查Windows画图程序能否打开本程序所存的图形文件。 5.9.6 用拖动鼠标方法画椭圆或圆 Windows画图程序用拖动鼠标方法画椭圆或圆,实现的方法是:以鼠标左键被按下处作为矩形的一个顶点,记为顶点1,该点坐标不改变。拖动鼠标移动到另一位置,以此位置作为矩形另一顶点,记为顶点2,顶点1和顶点2在矩形对角线的两端。绘制由顶点1和顶点2定义的矩形的内切椭圆,以显示要绘制椭圆的位置,这个椭圆的位置随着鼠标的移动而改变。鼠标抬起,以鼠标抬起位置为顶点2,用指定的画笔和画刷绘制由顶点1和顶点2定义的矩形的内切椭圆,作为最终图形。本节程序实现此功能。如果图形仅绘制在图形框(PictureBox控件)上,而不保存到其属性Image引用的位图对象中,当调用图形框的Invalidate()方法,发出Paint事件,Paint事件处理函数用图形框属性Image引用的位图对象恢复图像,将擦除仅绘制在图形框上的图形。拖动鼠标方法画椭圆或圆显示位置时,仅将椭圆或圆画在PictureBox上,在鼠标拖动显示下一个位置前,用图形框的Invalidate()方法擦除前一位置所画的图形。 新建项目。为Form1类增加5个变量:Point EndPoint; Point StartPoint; Bitmap bits; Graphics bitG; bool mark=false; 放PictureBox控件到子窗体。修改属性Dock=Fill。 在构造函数中增加语句:bits用来保存pictureBox1中位图图像,是pictureBox1属性Image引用的对象 bits=new Bitmap(pictureBox1.Width, pictureBox1.Height);
显示全部