2012-01-16 21 views
1

ライブラリのMono(C#)バインディングを使用してカイロにpngをロードする方法を調べましたが、ライブラリのCバインディングではcairo_image_surface_create_from_png()のようなものが使用されました。しかし、ライブラリのC#バインディングでは、Cairo.ImageSurface.*の下に有効な静的メンバーは見つかりませんでした。何か古い記事ではバインディングが不完全であると言われましたが、これが事実ですか?現在、私はGdk.Image.Pixbufを使ってメモリ内の(埋め込み)画像を読み込んでいますが、Gtk +がカイロに移動し、MonoのWindows.Formsがカイロを使用しているのを見て、カイロのC#バインディングは少なくとも画像読み込み私はおそらく何かが足りないでしょうか?モノラルでカイロに画像を読み込む

答えて

2

私はこれを最近行っています。あなたは、カイロの表面にあなたのイメージをロードする必要があります: -

var icon = new ImageSurface(pngfile); 

次に、あなたがそれをレンダリングするImageSurface.Showメソッドを使用することができます。

icon.Show(ctx, x, y); 

Mono.Cairo Cookbook pageでより有用なものを参照してください。

+0

ありがとうございました。私はImageSurfaceクラスのコンストラクタを見て、彼らは私のpngがリソースとして埋め込まれている(そしてストリームオブジェクトのように読み込まれる)ので、byte []からサーフェスを作成するように見えます。私は次にそれを試してみますが、コンストラクタがpngのメタデータに含める必要がある幅と高さが必要なように見えますが、ファイルシステムを基にしたpngの解析のように動作しない可能性があります。ファイルシステム全体をループする以外に、最初にgdkなどを解析することなく埋め込まれたpngをカイロの表面に取り込む別の方法はありますか?例えばカイロを介して直接、または可能な限りきれいな? – Bill

+0

@Bill、私の知る限りではありません。あなたはおそらくリソースストリームからのPNGの次元を見つけることができます。 – IanNorton

関連する問題