2011-07-09 11 views
17

私はSpriteBatchを使用してスクリーンにTexture2Dを描画していますが、どのように画像の不透明度を操作できるのでしょうか?誰でもこれを達成する最良の方法を知っていますか?Texture2Dを50%透明にするには? XNA

答えて

32

事前積算アルファでXNA 4.0を使用していると仮定します。あなたのspritebatch.drawでは、色をfloatで0.5fに50%の透明度を掛け、通常どおりに描画します。事前に乗算されたアルファを使用していない場合は、パフォーマンス上の理由から、また直感的に使用することをお勧めします。

例:

_spriteBatch.Draw(texture, location, Color.White * 0.5f); 

編集: はまた、あなたがあなたのBlendState.AlphaBlendにブレンド状態、またはアルファをサポートしNonPremultipliedない別のブレンド状態を設定してください。

例:

_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); 
+7

'Color'すべての4つのチャンネル(RGBA)を変調し、あらかじめ乗算描画モードを使用する場合にのみ透明で予想される変化を提供する上で、乗算演算子を使用して(例:' AlphaBlend')。他のブレンド状態が期待通りに機能するには(例えば、 'Additive'と' NonPremultiplied')、色のアルファ値を直接設定しなければなりません。 –

6

ちょうどnew Color(RGBA);として色を使用する:

  • RはG
  • 赤が
  • グリーンBはAアルファ
ある
  • 青色であります 例えば

    new Color(100, 100, 100, 100); 
    
    +2

    これは意図的なものではないかもしれませんが、 'Color'パラメータがenolumでないことを私に示しただけです!私はあなたのような自分の色を作ることができるとは考えていませんでした。 – TheGateKeeper

    関連する問題