Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. public class DrawingTypeOne : FrameworkElement
  2. {
  3. private readonly VisualCollection _visuals;
  4. public DrawingTypeOne(double thickness)
  5. {
  6. var myPen = new Pen
  7. {
  8. Thickness = 1,
  9. Brush = Brushes.White,
  10. };
  11. myPen.Freeze();
  12.  
  13. _visuals = new VisualCollection(this);
  14. var drawingVisual = new DrawingVisual();
  15. using (var dc = drawingVisual.RenderOpen())
  16. {
  17. dc.DrawLine(myPen, new Point(0,0) , new Point(100,100));
  18. _visuals.Add(drawingVisual);
  19. }
  20. }
  21.  
  22. protected override Visual GetVisualChild(int index)
  23. {
  24. return _visuals[index];
  25. }
  26.  
  27. protected override int VisualChildrenCount
  28. {
  29. get
  30. {
  31. return _visuals.Count;
  32. }
  33. }
  34. }
  35.  
  36. public class DrawingTypeTwo : FrameworkElement
  37. {
  38. private readonly VisualCollection _visuals;
  39. public DrawingTypeTwo()
  40. {
  41. _visuals = new VisualCollection(this);
  42.  
  43. var geometry = new StreamGeometry();
  44. using (var gc = geometry.Open())
  45. {
  46. gc.BeginFigure(new Point(0, 0), true, true);
  47. gc.LineTo(new Point(100,100), true, false);
  48. }
  49. geometry.Freeze();
  50.  
  51. var drawingVisual = new DrawingVisual();
  52. using (var dc = drawingVisual.RenderOpen())
  53. {
  54. dc.DrawGeometry(Brushes.Red, null, geometry);
  55. }
  56.  
  57. _visuals.Add(drawingVisual);
  58. }
  59.  
  60. protected override Visual GetVisualChild(int index)
  61. {
  62. return _visuals[index];
  63. }
  64.  
  65. protected override int VisualChildrenCount
  66. {
  67. get
  68. {
  69. return _visuals.Count;
  70. }
  71. }
  72. }
  73.  
  74. class EllipseAndRectangle : DrawingVisual
  75. {
  76. public EllipseAndRectangle()
  77. {
  78. using (DrawingContext dc = RenderOpen())
  79. {
  80. // Black ellipse with blue border
  81. dc.DrawEllipse(Brushes.Black,
  82. new Pen(Brushes.Blue, 3),
  83. new Point(120, 120), 20, 40);
  84.  
  85. // Red rectangle with green border
  86. dc.DrawRectangle(Brushes.Red,
  87. new Pen(Brushes.Green, 4),
  88. new Rect(new Point(10, 10), new Point(80, 80)));
  89. }
  90. }
  91. }
  92.  
  93. public class EllAndRectHost : FrameworkElement
  94. {
  95. private EllipseAndRectangle _ellAndRect = new EllipseAndRectangle();
  96.  
  97. // EllipseAndRectangle instance is our only visual child
  98. protected override Visual GetVisualChild(int index)
  99. {
  100. return _ellAndRect;
  101. }
  102.  
  103. protected override int VisualChildrenCount
  104. {
  105. get
  106. {
  107. return 1;
  108. }
  109. }
  110. }
  111.  
  112. <local:EllAndRectHost Margin="30" ... />
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement