Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DrawingTypeOne : FrameworkElement
- {
- private readonly VisualCollection _visuals;
- public DrawingTypeOne(double thickness)
- {
- var myPen = new Pen
- {
- Thickness = 1,
- Brush = Brushes.White,
- };
- myPen.Freeze();
- _visuals = new VisualCollection(this);
- var drawingVisual = new DrawingVisual();
- using (var dc = drawingVisual.RenderOpen())
- {
- dc.DrawLine(myPen, new Point(0,0) , new Point(100,100));
- _visuals.Add(drawingVisual);
- }
- }
- protected override Visual GetVisualChild(int index)
- {
- return _visuals[index];
- }
- protected override int VisualChildrenCount
- {
- get
- {
- return _visuals.Count;
- }
- }
- }
- public class DrawingTypeTwo : FrameworkElement
- {
- private readonly VisualCollection _visuals;
- public DrawingTypeTwo()
- {
- _visuals = new VisualCollection(this);
- var geometry = new StreamGeometry();
- using (var gc = geometry.Open())
- {
- gc.BeginFigure(new Point(0, 0), true, true);
- gc.LineTo(new Point(100,100), true, false);
- }
- geometry.Freeze();
- var drawingVisual = new DrawingVisual();
- using (var dc = drawingVisual.RenderOpen())
- {
- dc.DrawGeometry(Brushes.Red, null, geometry);
- }
- _visuals.Add(drawingVisual);
- }
- protected override Visual GetVisualChild(int index)
- {
- return _visuals[index];
- }
- protected override int VisualChildrenCount
- {
- get
- {
- return _visuals.Count;
- }
- }
- }
- class EllipseAndRectangle : DrawingVisual
- {
- public EllipseAndRectangle()
- {
- using (DrawingContext dc = RenderOpen())
- {
- // Black ellipse with blue border
- dc.DrawEllipse(Brushes.Black,
- new Pen(Brushes.Blue, 3),
- new Point(120, 120), 20, 40);
- // Red rectangle with green border
- dc.DrawRectangle(Brushes.Red,
- new Pen(Brushes.Green, 4),
- new Rect(new Point(10, 10), new Point(80, 80)));
- }
- }
- }
- public class EllAndRectHost : FrameworkElement
- {
- private EllipseAndRectangle _ellAndRect = new EllipseAndRectangle();
- // EllipseAndRectangle instance is our only visual child
- protected override Visual GetVisualChild(int index)
- {
- return _ellAndRect;
- }
- protected override int VisualChildrenCount
- {
- get
- {
- return 1;
- }
- }
- }
- <local:EllAndRectHost Margin="30" ... />
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement