方法一:将事件放在form_Load中,在窗体中画图
 
   1:          protected void MainForm_Load(object sender,EventArgs e)
   2:          {
   3:              InitialPoint();        
   4:              Bitmap bm = new Bitmap(this.Width,this.Height);
   5:              Graphics grp = Graphics.FromImage(bm);
   6:              DrawCurves(grp,lpt);
   7:              pictureBox1.Image =bm;
   8:              //if use load event,then use bitmap,if not ,there is no need.
   9:   
  10:          }

方法二:利用picturebox画图,放在Load事件中。

   1:          protected void MainForm_Load(object sender,EventArgs e)
   2:          {
   3:              InitialPoint();        
   4:              Bitmap bm = new Bitmap(pictureBox1.Width,pictureBox1.Height);
   5:              pictureBox1.Image =bm;
   6:              using(Graphics grp =Graphics.FromImage(pictureBox1.Image))
   7:              {
   8:                  DrawCurves(grp,lpt);
   9:              }
  10:   
  11:          }

方法三:将事件放在Paint事件中,这个只能放在form中,因为grp本例和e无关,但是参数是:PaintEventArgs e

   1:          private void Form1_Paint(object sender, PaintEventArgs e)
   2:          {
   3:              //if in this method,there is no need to use bitmap
   4:              InitialPoint();    
   5:              Graphics grp =this.CreateGraphics();
   6:              DrawCurves(grp,lpt);        
   7:          }


方法四:paint事件,在picturebox上,按照下边这个例子,用e这个参数,不仅可以放在form的paint上,也可以放在picturebox的paint上

 
 

   1:          private void pic_paint(object sender,PaintEventArgs e)
   2:          {
   3:               Graphics g = e.Graphics;
   4:               DrawCurves(g,lpt);
   5:          }

   1:          private void DrawCurves(Graphics grp, List<Point> pointList)
   2:          {
   3:              Point[] temps = new Point[pointList.Count];
   4:              pointList.CopyTo(temps);
   5:              grp.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
   6:              grp.DrawCurve(new Pen(Color.Red, 2), temps);
   7:             // grp.Dispose();如果用Paint事件绘图,这个似乎不可以
   8:          }

注明:lpt是一个List<Point>

用Drawing画图如何不会消失的更多相关文章

  1. 英语进阶系列-A04-英语升级练习二

    古诗背诵 要求:背诵和朗读,然后翻译成现代文,并绘制图像描述图中的内容,同时看看某些内容可以用什么单词替换,时间限制到15 minutes. 速记词汇系列 要求:将词汇快速朗读并记忆,时间为8 min ...

  2. C# 在窗口绘制图形(打点、画圆、画线)

    需要包含命名空间 using System.Drawing; 画图前需要先创建画板 void Display() { Graphics g = this.CreateGraphics(); //创建画 ...

  3. Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  4. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  5. 对Raphael画图标的一个jquery简单封装

    公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...

  6. Algorithmic Graph Drawing in TikZ

    最近在写模板时需要画个图 ("图论"的"图"). 本来打算用Windows画图 (mspaint) 的, 但是效果不好, 还是决定用LaTeX的TikZ画. 这 ...

  7. Graphics 导出图片使用【这个主要是画图类图的使用,记录一下】

    /// <summary> /// 导出信令流程矢量图 /// </summary> /// <param name="signalFlowInfos" ...

  8. c#代码画图

    说明:此示例代码在我做的一个项目中  不过还是可以学习一下 一:直角坐标系显示数据 先看效果图:

  9. IOS 作业项目(4)步步完成 画图 程序(中续)

    一,程序布局整理 前言://1,程序启动//2,程序流程框架//3,程序界面一致//4,程序界面功能, //这里只做页面的固定功能, //在首次创建界面时,我们会指定好固定事件触发前的固定方法 //至 ...

随机推荐

  1. JS Flex交互:html嵌套Flex(swf)

    一.html页面嵌套Flex需要用到 swfobject.js swfobject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入F ...

  2. cocos2dx 兼容性

    报错: Caused by: java.lang.UnsatisfiedLinkError: Couldn't load cocos2dcpp: findLibrary returned null 因 ...

  3. 解决IE6不支持position:fixed属性

    最近在优化网站浮动广告时候遇见了IE6不支持position:fixed属性.上网收集了一下解决方案 比较好的方案就是利用css表达式进行解决 补充:CSS Expression (CSS 表达式), ...

  4. iOS中CollectionView由于多次点击造成错误的解决方案

    iOS中CollectionCiew由于多次点击,会给程序造成错误. 这个时候,我们可以用过手势类来进行判断和过滤. 但是,有一个快捷的解决方法,那就是给用户响应增加延时操作. 具体代码如下: [co ...

  5. Codeforces Gym 100015H Hidden Code 暴力

    Hidden Code 题目连接: http://codeforces.com/gym/100015/attachments Description It's time to put your hac ...

  6. 一步步学Mybatis-实现单表情况下的CRUD操作 (3)

    今天这一章要紧接上一讲中的东西,本章中创建基于单表操作的CRUD与GetList操作,此示例中以Visitor表为范例,为了创建一点测试数据我们先弄个Add方法吧 继续在上次的IVisitorOper ...

  7. Spring MVC 3.0 深入

    核心原理: . 用户发送请求给服务器.url:user.do . 服务器收到请求.发现DispatchServlet可以处理.于是调用DispatchServlet. . DispatchServle ...

  8. 教程:如何减小iOS应用程序的大小?

    本文译自:Reducing the size of my App Q: 怎样才能让我的程序安装包小一点,让程序的下载和安装更快速? A: 本文收集了一些减小程序安装包大小的相关技巧(当第一次下载和安装 ...

  9. 程序的内存分配 C\C++

    原文:http://blog.csdn.net/oohaha_123/article/details/24460425 程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区( ...

  10. 计算机网络中的TCP/UDP协议到底是怎么回事(二)

    上一篇博客阐述了TCP/IP五层网络结构模型以及一些关于TCP.UDP的基础知识,这篇博客会接着写一些关于TCP拥塞控制的算法以及对TCP中常有的疑问进行解答. TCP拥塞控制 首先了解几个概念,为下 ...