2017-01-30 9 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