WPF 实时绘图的逻辑

实时绘图实际上是两个线程。外部线程直接用thread,只有到绘图那个逻辑才用绘图控件的mycanvas2.Dispatcher.Invoke。

或者说,INVOKE并不是开线程,只是一个绘图的委托而已。

主线程:

private void Read_UDP_Click(object sender, RoutedEventArgs e)
        {
            TCPRx mytcp = new TCPRx(" ", );

---------------------------------

error

---------------------------------

    //Action<Canvas> updateAction = new Action<Canvas>(mytcp.readdata);
            //updateAction.Invoke(this.FigureShow);
            //this.FigureShow.Dispatcher.Invoke(updateAction,this.FigureShow);
            //Action<Canvas, String> updateAction = new Action<Canvas, string>(mytcp.readdata);
            //this.Dispatcher.BeginInvoke(updateAction, this.FigureShow, "");

new Thread(() =>
            {
                //this.FigureShow.Dispatcher.Invoke(new Action(() =>
                {
                    while (true)
                    {
                        mytcp.readdata(this.FigureShow);
                        Thread.Sleep(10);
                    }
                }
                //)
                //);
            }).Start();
        }

--------------------------------------------------------------------------------------------------------

绘图

--------------------------------------------------------------------------------------------------------

public void readdata(Canvas mycanvas2)
        {
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint senderRemote = (EndPoint)sender;

state = new State(myconnect);
            buffer = new byte[length];
            //myconnect.BeginReceiveFrom(buffer, 0, length, SocketFlags.None, ref senderRemote, drawfigure, state);
            //---- myconnect.Receive(buffer);//buffer, 0, length, SocketFlags.None, ref senderRemote, drawfigure, state);

string message = System.Text.Encoding.Default.GetString(buffer, 0, length);
            string line = System.Text.Encoding.Default.GetString(buffer, 0, length);
      
            if (string.IsNullOrEmpty(line.Trim()))
            {
                return;
            }

//this.userName.Text = " 测试UI";  
            mycanvas2.Dispatcher.Invoke(
              new Action(
                 delegate()
                 {
                   
                    
                 }
           )
           );

}

时间: 2024-08-01 10:46:57

WPF 实时绘图的逻辑的相关文章

WPF路由事件:逻辑树和可视树

一.什么是逻辑树 逻辑树就是描述WPF界面元素的实际构成,它是由程序在XAML中所有的UI元素组成.最显著的特点就是由布局控件.或者其他常用的控件组成. 1 <Window x:Class="WpfRouteEvent.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.c

iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用

首先,声明几个属性 @property(nonatomic,strong)UIBezierPath * beizer; @property(nonatomic,assign)CGPoint startPoint; @property(nonatomic,assign)CGPoint movePoint; @property(nonatomic,strong)CAShapeLayer * shapelayer; 然后注册屏幕上的拖拽事件,并初始化贝塞尔曲线和CAShapeLayer - (void

安卓自定义View,实时绘图保存为图片

采用单缓冲与双缓冲机制分别实现. 一.单缓冲机制 1.1自定义View,重写ondraw函数 public class Brush extends View { private Paint brush = new Paint(); private Path path = new Path(); int j = 0, n = 0; // xml创建view时调用的构造函数 public Brush(Context context,AttributeSet attrs) { super(contex

WPF特效-绘制实时2D激光雷达图

原文:WPF特效-绘制实时2D激光雷达图 接前两篇: https://blog.csdn.net/u013224722/article/details/80738619 https://blog.csdn.net/u013224722/article/details/80738995 除了c# GDI .Opencv(c++). c# Emgu绘图外,其实c#? WPF绘图功能也很强大.上文中之所以最终使用了Emgu绘图 ,只是因为在踩坑过程中尝试使用了Emgu的图像处理函数. 即首先将List

零代码如何打造自己的实时监控预警系统

概要 为什么要做监控 线上发布了服务,怎么知道它一切正常,比如发布5台服务器,如何直观了解是否有请求进来,访问一切正常.当年有一次将线上的库配置到了Beta,这么低级的错误,排错花了一个通宵,十几个人.某个核心服务挂了,导致大量报错,如何确定到底是哪里出了问题.SOA带来的问题,调用XX服务出问题,很慢,是否可以衡量? 由于业务系统数量大,每天都会产生大量的系统日志和业务日志,单流式业务的一台服务器产生的日志达400M 想直接查看内容打开可能几分钟,而且内容之多根本无法查看,给开发和运维带来诸多

从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第一讲 WPF中 windows消息机制

谈到桌面应用程序,我们第一反应就是它的消息机制是怎么处理的,那么我们就先聊聊这个windows消息机制 谈起“消息机制”这个词,我们都会想到Windows的消息机制,系统将键盘鼠标的行为包装成一个Windows Message,然后系统主动将这些Windows Message派发给特定的窗口,实际上消息是被Post到特定窗口所在线程的消息队列,应用程序的消息循环再不断的从消息队列当中获取消息,然后再派发给特定窗口类的窗口过程来处理,在窗口过程中完成一次用户交互. 其实,WPF的底层也是基于Win

Storm实时计算:流操作入门编程实践

转自:http://shiyanjun.cn/archives/977.html Storm实时计算:流操作入门编程实践 Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比较简单,实际编程开发起来相对容易.下面,简单介绍编程实践过程中需要理解的Storm中的几个概念: Topology Storm中Topology的概念类似于Hadoop中的MapReduce Job,是一个用来编排.容纳一组计算逻辑组件(Spout.Bolt)的对象(Hadoop MapReduce中一

WPF 事件

1.1 逻辑树与可视树 如果把一片树叶放在显微镜下观察,你会发现这片叶子也像一棵树----有自己的基部并向上生长出多级分叉.在WPF的Logic Tree上,扮演叶子的一般都是控件.如果我们把WPF中的控件也放在显微镜下观察,你会发现WPF控件本身也是一棵由更细微级别的组件(他们不是控件,而是一些可视化组件,派生至Visual类)组成的树. 在WPF中有两种树:逻辑树(Logical Tree)和可视树(Visual Tree),XAML是表达WPF的一棵树.逻辑树完全是由布局组件和控件构成.如

(第8篇)实时可靠的开源分布式实时计算系统——Storm

摘要: 在Hadoop生态圈中,针对大数据进行批量计算时,通常需要一个或者多个MapReduce作业来完成,但这种批量计算方式是满足不了对实时性要求高的场景.那Storm是怎么做到的呢? 博主福利 给大家赠送一套hadoop视频课程 授课老师是百度 hadoop 核心架构师 内容包括hadoop入门.hadoop生态架构以及大型hadoop商业实战案例. 讲的很细致, MapReduce 就讲了 15 个小时. 学完后可以胜任 hadoop 的开发工作,很多人学的这个课程找到的工作. (包括指导