2016-09-15 5 views
1

スプライトをUWP a.k.aに保存する方法は? this SO postに記載されている2つの方法は、UWPでは機能しません。 (CroppedBitmapクラスは動作せず、ImageBrushクラスはViewboxプロパティを持たない)。私はRenderTransformClipをやってみましたが、どちらも成功しませんでした。どこへ行く?Windowsストアアプリの画像をクリッピングする

+1

実際に何をしようとしているのかを明確にすることはできますか?スプライトでは、すべての状態のすべてのスプライトイメージを含む単一の大きなビットマップが必要であり、スプライトのアニメーションを実行するためにクリッピングを動的に変更しようとしていることを推測しています。これが本当にあなたがしようとしているものなら、私は[Win2D](https://github.com/Microsoft/Win2D)を調査することをお勧めします。 – ibebbs

+0

@ibebbs:あなたの理解は正しいです。 WPFとSLでは、純粋なXAMLでコードを書くことなくこれを行うことができます(質問に投稿したSOのリンクを参照)。私はすでにグーグルでWin2Dを見た。簡単な方法が見つからなければ、私は最終的な手段としてそれを使わなければならないように見えます。 – dotNET

答えて

1

@bebbsと同じように、Win2Dは、UWPでスプライトを使用するのに適しています。 Win2Dは、GPUアクセラレーションを使用した即時モードの2Dグラフィックスレンダリング用の使いやすいWindowsランタイムAPIです。 Win2DのCanvasSpriteBatch Classはスプライトのシナリオに最適化されています。

CanvasSpriteBatchは、多くのスプライトが同じソースビットマップを使用して行で描画される場合は特に、複数のビットマップをより効率的に引き出すことを可能にし、DrawImage APIよりも優れた性能を有しています。 CanvasSpriteBatchは、以下の機能をサポートしています

CanvasSpriteBatchの使用方法の詳細については、CanvasSpriteBatch Class documentとGitHubのSprite Sheets sampleを参照してください。

アップデート:私は

<Rectangle Width="128" Height="192"> 
    <Rectangle.Fill> 
     <ImageBrush AlignmentX="Left" 
        AlignmentY="Top" 
        ImageSource="Assets/WizardIdleRight.png" 
        Stretch="None"> 
      <ImageBrush.Transform> 
       <TranslateTransform x:Name="SpriteSheetOffset" X="0" Y="-384" /> 
      </ImageBrush.Transform> 
     </ImageBrush> 
    </Rectangle.Fill> 
</Rectangle> 

をここに:

あなたがWin2Dを使用したくない場合は、あなたが欲しいものachiveする一つの簡単な方法は、次のようにTransformImageBrushを使用していますSprite Sheets sampleWizardIdleRight.pngを使用した場合、オフセットをTranslateTransformに変更することができます私たちが望むスプライト

+0

ありがとう、非常に有益なジェイ。私が開発しているゲームはシンプルなカードゲームで、52枚のカード画像をすべて1枚のPNGに収めています。私が探していたのは、このイメージをアプリケーションレベルのリソースとしてロードし、各イメージ要素の 'Clip'プロパティを割り当てて、対応するカードを表示することでした。より激しい、インタラクティブな、リアルタイムのゲームのためのより大きな銃のような私にWin2Dのサウンド。またはそれは? – dotNET

+0

XAMLでこれを書いているのであれば、好奇心を払わないのはなぜですか?DataTemplateではなく、スーツグリフだけ(あるいはもっと良い意味ではシンボルフォント)のグラフィックリソースを使用します。これにより、サイズのアプリケーションがずっと小さくなり、さまざまな解像度にわたってスケールが向上します。 – ibebbs

+0

@dotNET Win2Dを使用したくない場合は、ImageBrushをTransformで使用するのが簡単です。更新された回答を確認してください。 –

関連する問題