标签:Point 对象 visual 50 pen 可视化 new drawingContext
比几何和路径消耗的资源更小,适合大量。
drawingContext.DrawRectangle();
drawingContext.DrawText();
drawingContext.DrawEllipse();
drawingContext.DrawGeometry();
drawingContext.DrawRoundedRectangle();
drawingContext.DrawImage();
- 定义可视化对象
DrawingVisual visual = new DrawingVisual(); using (DrawingContext drawingContext = visual.RenderOpen()) { Pen pen = new Pen(Brushes.Black, 3); drawingContext.DrawLine(pen, new Point(0, 50), new Point(50, 0)); drawingContext.DrawLine(pen, new Point(50, 0), new Point(100, 50)); drawingContext.DrawLine(pen, new Point(0, 50), new Point(100, 50)); }
- 借助元素,将可视化对象添加到元素树中
- AddVisualChild() 和 AddLogicalChild() 注册
- 重写GetVisualChild 方法
绘制可视化对象
class MyPanel: Panel { private List<Visual> visuals = new List<Visual>(); protected override Visual GetVisualChild(int index) { return visuals[index]; } protected override int VisualChildrenCount => visuals.Count; public void AddVisual(Visual visual) { visuals.Add(visual); base.AddLogicalChild(visual); base.AddVisualChild(visual); } }
元素中包含可视化对象
private void MyPanel_Loaded(object sender, RoutedEventArgs e) { DrawingVisual visual = new DrawingVisual(); using (DrawingContext drawingContext = visual.RenderOpen()) { Brush brush = Brushes.LightGreen; Pen pen = new Pen(Brushes.SteelBlue, 3); drawingContext.DrawLine(pen, new Point(0, 50), new Point(50, 0)); drawingContext.DrawLine(pen, new Point(50, 0), new Point(100, 50)); drawingContext.DrawLine(pen, new Point(0, 50), new Point(100, 50)); drawingContext.DrawRectangle(brush, pen, new Rect(new Point(100, 100), new Size(50, 100))); drawingContext.DrawEllipse(brush,pen,new Point(300,200),100,60); } MyPanel.AddVisual(visual); }
标签:Point,对象,visual,50,pen,可视化,new,drawingContext 来源: https://www.cnblogs.com/codinghard/p/15708911.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。