2017-01-30 3 views
0

Я создал новый универсальный проект приложения (VS 2015) и хотел бы случайным образом нарисовать круг на странице через отдельный поток. Пожалуйста, см. Ниже простой код - что нужно добавить, чтобы нарисовать круг?Как нарисовать пользовательский круг в Windows 10 Universal App в отдельной теме?

спасибо!

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.UI; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation; 
using Windows.UI.ViewManagement; 
using Windows.UI.Xaml.Shapes; 
using System.Threading.Tasks; 

namespace CircleDraw { 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
      this.Loaded += MainPage_Loaded; 
     } 
     private void MainPage_Loaded(object sender, RoutedEventArgs e) 
     { 
      Task.Factory.StartNew(() => DrawNewCircleEverySecondAsync(), TaskCreationOptions.LongRunning); 
     } 
     private static Random r = new Random(DateTime.UtcNow.Millisecond); 
     private const int minRadius = 25; 
     private const int maxRadius = 100; 
     private async Task DrawNewCircleEverySecondAsync() 
     { 
      double height = grid1.ActualHeight; 
      double width = grid1.ActualWidth; 
      while (true) 
      { 
       int x = r.Next((int)width); 
       int y = r.Next((int)height); 
       int radius = r.Next(minRadius, maxRadius); 

       // How do I draw this new circle here? 

       await Task.Delay(1000); 
      } 
     } 
    } 
} 
+0

Что вы имеете в виду нарисовать собственный круг? Не могли бы вы предоставить более подробную информацию? – Scavenger

+0

Я имею в виду рисовать круг на экране с заданными координатами x, y и радиусом. –

ответ

0

Если вы просто пытаетесь нарисовать круг на экране, попробуйте следующее:

 var Ellipse1 = new Ellipse(); 

     Ellipse1.Fill = new SolidColorBrush(Windows.UI.Colors.Transparent); 
     Ellipse1.Stroke = new SolidColorBrush(Windows.UI.Colors.DarkGreen); 
     Ellipse1.Width = radius * 2; //Diameter is twice the radius 
     Ellipse1.Height = radius * 2; 
     Ellipse1.SetValue(Canvas.LeftProperty, System.Convert.ToDouble(x)); //X value 
     Ellipse1.SetValue(Canvas.TopProperty, System.Convert.ToDouble(y)); //Y value 

     layoutRoot.Children.Add(Ellipse1); //Add the circle to the page. Could also use a canvas in place of layoutRoot. 

Это требует:

использованием Windows.UI.Xaml.Shapes;

Я не пробовал это асинхронно, но я не понимаю, почему это не должно работать.

Для получения дополнительной информации на чертеже формы в Windows, Юниверсал см: https://docs.microsoft.com/en-us/windows/uwp/graphics/drawing-shapes

Смежные вопросы