2

私はJavaを知りません(通常はcで書きます)

javaのウィンドウにピクセル配列のコンテンツをブリットする方法を効率的に行うにはどうすればよいですか?

blit pixels[][]ウィンドウに(ループで)必要です

次のようなものを使用できます

 pixels[][] -> MemoryImageSource -> Image -> drawImage 

MemoryImageSourceしかし、すべてのフレームでの作成と削除 Image は奇妙に思えます-どうすれば簡単かつ合理的に効率的に行うことができますか? 誰かがコード例を教えてくれませんか、tnx

4

2 に答える 2

6

通常、Java では、ネイティブImage型を操作し、派生したグラフィックスを使用する方が簡単です。バックグラウンドでJava も blit を使用するため、ワークロードを軽減するために高レベルの抽象化が行われます。

ただし、ピクセル データを抽象化する方法がない場合は、ソリューションの代わりにRasterおよびWritableRaster (配列の一部を置き換えることができる場所) を使用できます。これらのラスターは、言及した drawImage メソッドを使用して描画できるBufferedImageで使用できます。ここで、基本的に画像を作成し、後で操作するためにラスターを取得する1 つの方法を見つけました。

int x, y = 100;
BufferedImage image   = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = image.getRaster();

その後、そのラスター (またはそのごく一部) を操作して再描画できます。

ピクセル配列から画面までの距離が短くなるため、これによりパフォーマンスがわずかに向上する可能性があります。しかし、AWT api の深さ全体を完全に理解している人はほとんどいないと思います。もちろん、それはすべてネイティブ実装に依存しています。そのため、私の考えには推測の健全な部分が含まれています ;-) でも、お役に立てば幸いです..

于 2012-11-27T18:37:57.680 に答える
5

ColorModel速度を上げるために、このに示すように、のバリエーションを事前に計算できます。

画像

于 2012-11-27T18:49:31.703 に答える