我通过串口可用获取一个接一个坐标,想用将获取的坐标点依次相连,实现模拟路径的效果,我想在picturebox上画图,但是为什么画图的函数放在private void pictureBox1_Paint(object sender, PaintEventArgs e)里面,整个程序就收不了串口数据了,一直卡在pictureBox1_Paint这个地方,如果把画图的函数放在private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)这个函数里面,我发现能收到数据,但是就是画不出来图。
谁能告诉我怎样才能用采集到的数据,在picturebox里实时输出图像呢,我觉得自己的这个东西不用timer计时实现,希望串口来一个数据画一条线。。我觉得应该是个很简单的问题,但是就是没想明白。

解决方案 »

  1.   

    在接收事件里写
    接收数据,把数据保存然后触发pictureBox1_Paint事件
    画出坐标
      

  2.   

    我想实时画图,用picturebox可能吗??如果先接受了数据,存在一个数组里面,然后再用picturebox现实,那就没什么意义了吧。
    我在form_Paint里面直接画的话,貌似可以,但我还是想用一个类似picturebox的工具现实图像,不想直接在form上现实,有别的方法吗??
      

  3.   

    串口是自动监听数据的,发送一次,接收写在DataReceived事件里,处理及保存都可以放在此事件里写。
    如果想定时保存,那就加timer控件
    application.doevents
      

  4.   

    可是我不想用timer啊我想每接收一次,就画一条小线段,能实时输出。
    picturebox的画图语句,必须写在picturebox_paint里面吗??写在接收串口数据的函数里面可以吗??
      

  5.   

    画图的可以看看这个程序可以直接在串口的事件里操作这个的
    http://download.csdn.net/source/294915