3

PNG 画像をメモリにロードし、そこから libpng を使用して生のピクセル データを取得できます。また、XCB またはプレーン X11 を使用して背景が空白のウィンドウを作成することもできます。

ウィンドウ内に画像を表示するには、次に何をすればよいですか?

4

1 に答える 1

4

XLib メソッドは次のとおりです。

  • XImageビジュアルに適した奥行きのある構造を作成する
  • 生のピクセル データを、深度とビジュアル クラスの組み合わせに対応する形式に変換します。
  • 電話XPutImage

XPutPixel2 番目のステップは、個々のピクセルごとに呼び出すことで実現できます。RGB 値をピクセル値に変換する必要があります。15、16、24、または 32 ビットのビジュアルの場合、これはビットマスクを使用した簡単な操作です (visual->red_mask赤のコンポーネントを配置する場所などを決定するために使用します)。8 ビット深度をサポートしたい場合は、ディザリングを使用し、適切なカラーマップ (おそらく 216 要素のカラー キューブ) を割り当てて使用する必要があります。幸いなことに、最近では 8 ビットのみのハードウェアはほとんどありません。

呼び出しXPutPixelが遅すぎる場合は、その動作をインラインで実装する必要があります。たとえば、このソースをガイダンスとして使用してください。

xcb には、XImage と同等の機能を持つ xcb-util-image というライブラリがあります。私はそれに慣れていません。

于 2014-07-26T09:28:18.630 に答える