我现在是这么画的,class A
{
private GeometryGroup _lines;
private Path _path;
public A()
{
   _path.Data = _lines;
}
public Draw()
{
  LineGeometry line = new LineGeometry(p1, p2);
  _lines.Children.Add(line);
}
}一开始的速度很好,但是线多了以后,就有明显的延迟了。
有什么更快速的方法不?

解决方案 »
  1. Actipro WPF Studio 組件是wpf最快的

  2. 程序应该没问题吧。
    就是当Children的内容达到上万条以后,效率就会明显的下降。
    我看了一下,Children属性返回的应该是个IList类型,不存在超过预分配的最大值,就重新分配数据的问题吧?
    而且我把预定义的最大容量设到10万100万,还是没有很好的改善。

  3. 这个问题有人能给点思路吗?
    我已经把WPF下所有能画线的方式基本都试过了,效果还是不太理想。
    1,直接在Canvas下Children.Add(Line),慢。
    2,在Canvas下Children.Add(Path),然后Path.Data=GeometryGroup,然后GeometryGroup.Children.Add(LineGeometry), 慢。
    3,不使用GeometryGroup,改用据说性能更好的StreamGeometry,慢。
    4,使用DrawingVisual,然后用DrawingContext画图,
    效果很奇怪,context.DrawGeometry(null, new Pen(_brushes[i], 1), line),这种方式比较快(说实话,还是不理想,勉强凑合)
    但是我不用new Pen的方式,直接在类里面,定义好一个Pen _pen = new Pen(),然后context.DrawGeometry(null, _pen, line),这种方式的速度跟上面几种方法效果一样。
    按道理不用每次都new Pen,应该快才对啊。我被这个问题快搞死了,是不是无解啊?

  4. 就说明问题不是出在new的过程中,new的速度相当快的

  5. 可是在Winform下,画几千条一点延迟都没有。关键在于WPF是保留模式画图,而winform是立即模式画图。
    在Winform下,每次我只画一条线,如果刷新的话,就把所有线都画一次,一般画图时不会刷新,所以画图速度很快。
    但是在WPF下,每次画图,都是要Add一个对象进去,就这个差别导致数量多了以后,每次add一个对象都会比较慢。实在想不到在WPF下解决这个问题的办法。

WPF画线问题,几千条以后就有明显的延迟了。的更多相关文章

  1. WPF 画线动画效果实现

    原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...

  2. CGContextRef 画线简单用法

    CGContextRef CGContextMoveToPoint(context,150,50);//圆弧的起始点 CGContextAddArcToPoint(context,100,80,130 ...

  3. Android中Path类的lineTo方法和quadTo方法画线的区别

    转载:http://blog.csdn.net/stevenhu_223/article/details/9229337 当我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的li ...

  4. 纯JS画点、画线、画圆的方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

    // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec ...

  6. Unity3D 画线插件 Vectrosity_Simple2DLine

    Vectrosity是一个很方便的画线插件,用它我们可以画出2D,3D,贝塞尔,圆,椭圆等各种线条图案. :链接: http://pan.baidu.com/s/1pJjTFjt 密码: uesn 首 ...

  7. cocos2d-x3.6 连连看连通画线

    我的博客:http://blog.csdn.net/dawn_moon 网上看到非常多人写的连连看,都没有画连线的实现.事实上要话连线挺简单的.cocos2d-x 提供了一个非常方便的绘图形的类.Dr ...

  8. ArcGIS API for JavaScript根据两个点坐标在地图上画线

    ArcGIS API for JavaScript根据两个点坐标在地图上画线比如说a(xxxx,xxxxx),b(xxxx,xxxxx).利用这两个点画一条线 var polyline = new e ...

  9. 画线代码V1.0.0

    画线代码: 最终效果图: 优点: 1.效果还行,计算量也不大(就一点2维直线一般式能有多少运算量). 缺点: 1.每条线怎么也是建模,可能会有点开销. 2.编辑起来很是麻烦. 代码部分: /***** ...

随机推荐

  1. 股票交易(洛谷U6084)

    题目背景 kkk最近迷上了炒股. 题目描述 kkk炒了N天股,第i天的股价为a[i]元.kkk希望股票每天都上涨1元钱,但是操盘手lzn并不想让kkk赚很多钱导致他亏本,于是a[i]相对a[i-1]就 ...

  2. 月考(cogs 1176)

    [题目描述] 在上次的月考中Bugall同学违反了考场纪律还吃了处分,更可气的是在第二天的校会时 间学校就此事做了全校通报. 现已知在当天校会时间有总共N个同学听到了有关Bugall的处分决定.  B ...

  3. gcc创建和使用静态库、动态库

    http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155599.html 目录树结构: test/include/hello.h #ifdef ...

  4. iOS开发人员不容错过的10大工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  5. (2)Underscore.js常用方法

    目录 1.集合相关方法        1.1.数组的处理                map(循环,有返回值),将返回的值依次存入一个新的数组                each(循环,无返回值 ...

  6. JavaScript获取当前根目录

    JavaScript获取当前根目录 主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (wi ...

  7. C程序设计语言习题解答

    1-6 #include <stdio.h> int main(void) { printf("getchar()!=EOF is:%d\n", getchar()!= ...

  8. 信号量进程同步,王明学learn

    信号量进程同步 一组并发进程进行互相合作.互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步. 信号量在进程同步时初始值为:0 信号量在进程互斥时初始值为:大于0的 本章节主要使用信号量,使的 ...

  9. 学习设计接口api(转)

    介绍 先说说啥是 Api 吧,以下摘自百度百科: API (Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于 ...

  10. Arduino101学习笔记(十)—— 串口通信

    //打开串口 Serial.begin(); //获取串口上可读取的数据的字节数.该数据是指已经到达并存储在接收缓存(共有64字节)中 Serial.available(); //读串口数据,串口上第 ...