代码:

    /// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DrawPanel chart_ = new DrawPanel();
LineCanvas _mask = new LineCanvas();
grid1.Children.Add(chart_);
grid1.Children.Add(_mask);
chart_.plot();
}
}
public class LineCanvas : Canvas
{
public LineCanvas()
{
Background = Brushes.Transparent;
var line = new Line()
{
StrokeThickness = 2,
Stroke = System.Windows.Media.Brushes.Black,
}; this.Children.Add(line);
MouseMove += (send, e) =>
{
Point point = e.GetPosition(this);
line.X1 = point.X;
line.Y1 = 0;
line.X2 = point.X;
line.Y2 = ActualHeight;
};
}
} public class DrawPanel : Panel
{
private DrawingVisual _drawingVisual = new DrawingVisual();
public DrawPanel()
{
this.AddVisualChild(_drawingVisual);
IsHitTestVisible = false;
}
public Pen p = new Pen(Brushes.Gainsboro, 1.0);
public void plot()
{
p.Freeze();
var dc = _drawingVisual.RenderOpen();
_drawingVisual.CacheMode = new BitmapCache();//这句话是关键,加了性能直接提升
for (int x = 0; x < 10000; x++)
{
double xx = 700.0 / 2 + ((x / 10000.0) * (700.0 / 2.0));
Point p1 = new Point(xx, 0);
Point p2 = new Point(xx, 353);
dc.DrawLine(p, p1, p2);
}
dc.Close();
}
protected override int VisualChildrenCount
{
get { return 1; }
}
protected override Visual GetVisualChild(int index)
{
if (index == 0)
return _drawingVisual;
throw new IndexOutOfRangeException();
}
}

最新文章

  1. UIDynamic(捕捉行为)
  2. Qt编程&#39;&quot;&quot;hello world
  3. deepin linux字体渲染(转)
  4. io端口与io内存详解
  5. 06- Shell脚本学习--其它
  6. Linux Shell 文本处理工具集锦
  7. Linux 基础入门(新版)”实验报告一~十二
  8. 常考的算法及Java知识总结
  9. SQL 使用经验
  10. 如何实现Linux下的U盘(USB Mass Storage)驱动
  11. IO流程中IO向量iovec
  12. 关于css的层叠上下文和层叠顺序问题
  13. Rhino学习教程——1.2
  14. Object constraint language for code generation from activity models
  15. 自写juqery插件实现左右循环滚动效果图
  16. Python 枚举【一】
  17. 【Hadoop学习之五】win7+Eclipse+hadoop3搭建本机开发环境
  18. Mysql的唯一性索引unique
  19. html中,纯数字或纯英文的一串字符超出父容器不会折行显示,如何解决?
  20. Web项目--------原Oracle数据库的项目同时兼容MySql

热门文章

  1. Nginx反向代理Odoo并转为https
  2. [JZOJ4648] 【NOIP2016提高A组模拟7.17】锦标赛
  3. UNION操作用于合并两个或多个 SELECT 语句的结果集。
  4. webpack静态资源拷贝插件
  5. centos6 nginx 配置本地https访问
  6. nginx 安装配置信息
  7. codeforces 1186E- Vus the Cossack and a Field
  8. PAT甲级——A1106 Lowest Price in Supply Chain
  9. 查询sitemap中重复的记录
  10. 用docker部署zabbix