2014-02-15 79 views
3

我正在嘗試編寫一個C#WPF應用程序,它將能夠生成大量圖像(表示行星),然後將它們相對於彼此移動。我有一個標準的C#winform應用程序這樣做,但我試圖將此轉換爲WPF以避免在快速移動圖像時出現可怕的刷新問題。以編程方式添加圖像並將它們放置在WPF畫布上

我一直是一個軟件開發人員20多年,一直在使用.Net/C#7年,但從未使用過WPF,直到本週纔開始琢磨我的腦袋。

我有一個位圖圖像,我正在使用所有圖像,現在需要以編程方式將任意數量的圖像添加到畫布,然後將它們放置在設定位置。我現在有所述代碼部分以增加每個圖像是

  string BodyName = "Body" + BodyCount.ToString(); 
      Image BodyImage = new Image 
      { 
       Width = moonBitmap.Width, 
       Height = moonBitmap.Height, 
       Name = BodyName, 
       Source = new BitmapImage(new Uri(moonBitmap.UriSource.ToString(), UriKind.Relative)), 
      }; 

      MainCanvas.Children.Add(BodyImage); 
      MainCanvas.SetTop(BodyImage, NewBody.YPosition); 
      MainCanvas.SetLeft(BodyImage, NewBody.XPosition); 

(NewBody.YPosition和NewBody.XPosition均爲雙)。

這看起來好像它會將任意數量的圖像添加到畫布。然而,機頂盒和SetLeft方法,我認爲這是我需要使用定位圖像將無法編譯的方法和我從智能感知

"Member 'System.Windows.Controls.Canvas.SetTop(System.Windows.UIElement,double)' cannot be accessed with an instance reference; qualify it with a type name instead." 

得到以下信息作爲一個新手到WPF我相信我我在做一些愚蠢的事情。任何人都可以告訴我應該怎麼做?

感謝

回答

6

SetTopSetLeft靜態方法Canvas類的,你就通過Canvas實例引用它們。嘗試用類名稱來提及這些方法:

Canvas.SetTop(BodyImage, NewBody.YPosition); 
Canvas.SetLeft(BodyImage, NewBody.XPosition); 
+0

謝謝,這樣做! – user3313792

相關問題