2012-02-15 17 views
1

小さなゲームエンジンをSilverlightに組み込みようとしています。Silverlightのキャンバスに画像を動的に描画する

しかし、私は現在、かなり低いレベルの問題に取り組んでいます。異なる位置に画像を描く能力。私はコードを使ってこれを動的に実行しようとしています。私が見たことから、XAMLのほとんどは少なくとも幾分静的なものになる傾向があります。

代わりに、ベースの「グリッド」をキャンバスに変更して、どこにでも描画できます。おそらく、これは悪い考えでしたが、わかりません。いずれかまたはすべてのアドバイスが役に立ちます。

 InitializeComponent(); 
     Image img = new Image(); 
     img.Source = new BitmapImage(new Uri("Generic URL here")); 
     ((BitmapImage)(img.Source)).DownloadProgress += new System.EventHandler<DownloadProgressEventArgs>(TestEventHandler); 

     Rect position = new Rect(new Point(25, 25), img.RenderSize); 

     LayoutRoot.Children.Add(img); 
     img.Arrange(position); 

上記のアレンジ機能を使用して、イメージを新しい位置に「移動」することでした。しかし、私はこれがどのように動作するか分かりません。上記のコードを実行すると、画像は画面に表示されなくなりました。

関連性のない質問:Silverlightアプリケーションで画像を保存することはできますか?URL経由で画像が読み込まれないのはなぜですか?私はそれが可能であることを知っているが、私が実際に尋ねることを意味するものは、どうすればそれについて行くだろうか?

ありがとうございました。画像の

-Stefan Zuefeldt

答えて

1
  • グリッドの代わりにキャンバスを使用することをお勧めします。キャンバス

  • に画像を追加

    • :あなたはその子の位置を変更したい場合は、キャンバスは点Pに画像を移動するには

    • を制御し、あなたがでそれを行うことができますグリッドよりも優れています

    • コールCanvas.SetLeft(IMG、PX)とCanvas.SetTop(IMG、はpY)


  • イメージをxapに追加する場合は、イメージをプロジェクトに簡単に追加し、イメージのビルドタイプを「コンテンツ」(デフォルトは「なし」または「リソース」、わかりません)に設定してから、相対URL:img.Source =新しいBitmapImage(新しいUri( "/ tmp.jpg"、UriKind.Relative));
1

依存プロパティは、キャンバス上の画像を検索するために設定されるべきです。

Canvas.SetTop、第二にCanvas.SetLeft

。もちろん、画像はSilverlightアプリケーション内に保存することができます。しかし、ビルドアクションは埋め込みリソースに設定する必要があります。

img.Source = new BitmapImage(new Uri("/MyNameSpace;components/images/someimage.png", UriKind.Relative)); 
1

XAMLは静的である必要はありません。 XAMLをデータモデルと組み合わせてデータバインディングを使用すると、XAMLは使用することができます。

あなたはキャンバス上の項目を移動することができ、何が欲しいのCanvas.TopCanvas.Left

hereあなたが記述しているような単純なアニメーションについて少しチュートリアルで依存関係プロパティです。あなたが "silverlight game tutorial"のためにgoogleしているなら、あなたはトンとトンのブログ、記事、そしてデモとソースコードを見つけるでしょう。

他に関係のない質問...あなたのアプリケーションに画像を埋め込むことができます。 hereは、ファイルや画像にアクセスするためのほとんどの方法の良いソースです。

1

いつか基本的なUIを備えたSLアプリケーションを開発しています。私は小さな経験に基づいていくつかのヒントを与えることができます。

代わりに、私は をどこにでも描画できるように、ベース 'グリッド'をキャンバスに変更しました。おそらく、これは悪い考えでした...

私はそれが明白な選択だと思います。キャンバス上の位置付けのものについては、このREF SL Layout - Absolute Layout

からの絶対位置に基づいてレイアウトを作成するには、キャンバスで グリッドを置き換える必要があります。 ...キャンバス上の位置を制御するために、あなたがコントロール上で次の添付プロパティを設定します。Canvas.Left & Canvas.Top


...と、Silverlightアプリケーションで画像を保存することが可能です、 としてURL経由で読み込まないようにしますか?私はそれが可能性があることを知っているが、私は 本当に尋ねることを意味する、私はそれについて行くだろうか?

(あなたのダウンロードは、たとえば、完了したとき)は、常に過度のメモリ消費量からあなたを救うことができるresizing the imagesので(それゆえ、メモリ内に)辞書やなめらかにあなたのイメージと形状を維持することができます。

これは私の頭に浮かぶものです。がんばろう。

関連する問題