How to draw on a Window in WPF (best practice)?

前端 未结 5 538
无人及你
无人及你 2021-02-01 04:01

I am trying to write a small interactive game-like application, where I need to have a Draw method that\'s gonna draw on screen, but can\'t figure out how to struct

5条回答
  •  甜味超标
    2021-02-01 04:22

    To Implement a Draw loop type behavior in WPF you can use the CompositionTarget.Rendering event. This is raised once per frame when the WPF drawing system is painting frames.

    As others have pointed out this is not very WPF friendly but it will work and can be used to get more immediate drawing behavior out of a WPF app.

    In most cases you would use a single root canvas and update say the Canvas position of an element on the CompositionTarget.Rendering event.

    For example to make a ellipse fly all over the screen do this:

    In your XAML (For a Window that is 640 by 480 in size):

    
             
    
    

    In your Code behind for the Window that the above XAML is in (Make sure to add a reference to System.Windows.Media in order to see the CompsitionTarget object :

        public static Random rand = new Random();
        public View()
        {
            InitializeComponent();
            CompositionTarget.Rendering += CompositionTarget_Rendering;
        }
    
        void CompositionTarget_Rendering(object sender, System.EventArgs e)
        {
            double newLeft = rand.Next(0, 640);
            double newTop = rand.Next(0, 480);
    
            theEllipse.SetValue(Canvas.LeftProperty,newLeft);
            theEllipse.SetValue(Canvas.TopProperty, newTop);
        }
    

提交回复
热议问题