C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ManagedDirectX(2D) Bitmapの透過合成


(過去ログ 65 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■37689 / inTopicNo.1)  ManagedDirectX(2D) Bitmapの透過合成
  
□投稿者/ Ins (8回)-(2009/06/26(Fri) 23:43:39)

分類:[C#] 

Microsoft Visual C# 2008 Express Edition
フォームアプリケーション

C#の.NETでソフトを開発しているのですが画面描画の速度で行き詰まってしまいました。
製作しているものは高速に画面を書き換える必要があり(書き換える必要があるのは内容のみでサイズは不変)、
それを低負荷で実現する必要があります。
そこで元々製作していた部分はそのままに、画面出力と一部の画像編集をManaged DirectXによって行おうとしています。

具体的にはGDI+によって何枚かのBitmapをGraphicsによって編集し、
それをManaged DirectXによって透過情報を保ったままに合成し、画面出力すると言う形を考えています。

Bitmapが変更されるたびにTextureに読み込む方法は余計に遅くなり現実的でありません。

そこであらかじめTextureと、そこからSurface、Graphicsオブジェクトを作り、それを編集し個別に画面に出力しようとしたのですが
Bitmapで編集した際と違いアルファブレンディングが上手く行われません。(以下のコード)

Surface s = texture.GetSurfaceLevel(0);
Graphics g = s.GetGraphics();
g.drawImage(bitmap,0,0);

色々と調べた結果上記の方法でGraphicsオブジェクトを取り出せるのはTextureのFormatがX8R8G8B8などの
アルファの含まれていない場合だけだと言うことが分りました。
ソースコードは紛失してしまったのですがTextureから作ったGraphicsオブジェクトでも
上手くアルファブレンディングが出来ていたことがあったので不可能ではないと思うのですが…
(思い違いか、あるいは上手くできた理由が別にあったのかもしれませんが)

こういった状況を打開する上手い方法はないでしょうか。
描画速度が改善され、且つ描画対象をコントロールごとに設定できるのであればManaged DirectXで無くともかまいません。
漠然とした質問で申し訳ないのですがよろしくお願いします。



引用返信 編集キー/
■37694 / inTopicNo.2)  Re[1]: ManagedDirectX(2D) Bitmapの透過合成
□投稿者/ オショウ (245回)-(2009/06/28(Sun) 15:25:38)
> 製作しているものは高速に画面を書き換える必要があり(書き換える必要があるのは内容のみでサイズは不変)、
> それを低負荷で実現する必要があります。
> そこで元々製作していた部分はそのままに、画面出力と一部の画像編集をManaged DirectXによって行おうとしています。

  透過加工した画像を『合成』する必要があるのかどうか解りませんが・・・
  合成したい画像の表示領域の最前面に透過画像を表示するレイヤを1枚作って
  そこに透過加工した画像を表示させる方法ではダメなのでしょうか。

  合成する手間(コスト)は無くなります。

以上。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -