問題タブ [cairo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3292 参照

c - Cairo グラフィックスで複数の長方形を描く

画像全体を黒く塗りつぶし、その中に別の長方形を別の色で描画するカイロプログラムを作成しようとしています。最終的には、これをデジタル時計のような現在時刻の .png を生成するプログラムにするつもりです。今のところ、ここで私はハングアップしています。

これが私のコードです:

問題は、このコードで四角形を描画して画像全体を占めることです。ここで、printf からは小さな部分のみを占める必要があります。この長方形を正しいサイズで表示する方法を知っている人はいますか?

0 投票する
1 に答える
787 参照

c++ - Cario:OpenGL のテキストエリア

レンダラーとして Cario (OpenGL をターゲット) を使用する既製の textarea クラスはありますか?

テキストエリアとは、ワードラップと幅と高さの制約がある複数行のテキストフィールドを意味します。このクラスを使用する必要があるコードは C++ で記述されています。

0 投票する
2 に答える
441 参照

python - OS-X で Cairo Surface を Pygame に変換する最も簡単な方法

Python で滑らかなアニメーションを描画する方法を探しています。一部はサブピクセル フィルタリングが好きで、一部は API に慣れているため、cairo を使用したいと考えています。私の最初のアプローチは、カイロ サーフェスのターゲットとして GTK.DrawingArea を使用することでした。描画は迅速でしたが、ディスプレイ/バッファリングを垂直同期に結び付ける信頼できる方法を見つけることができなかったため、アニメーションはぎくしゃくして信頼性がありませんでした。

私の次のアプローチは、PyGame を試すことでした。wikiの例を出発点として使用して、さまざまな跳ねるボールをアニメーション化する簡単なコードをいくつか書きました。リンクされたページのさまざまなアプローチは、次の 2 つのカテゴリに分類されます。

  1. オフスクリーン cairo ImageSurface に描画し、Numpy を使用してピクセル バッファーを Pygame サーフェスに変換します。
  2. 両方のサーフェスで同じメモリを共有

最初のアプローチは、変換に約 10 ミリ秒かかるため、パフォーマンスが低下します。これは、私が 60 Hz フレーム用に持っているタイム スライスのほとんどです。2.2Ghz Core2Duo と Nvidia 8400 を搭載した Macbook-pro でコードを実行しています。時間はサーフェスのサイズに大きく依存します。これは 800x800 ウィンドウの場合です。

2 番目のアプローチは、ピクセル座標の順序から明らかになります。cairo と pygame はどちらも、RGB ピクセル順序のみを使用でき、変換をサポートしていないと主張しています。問題は、pygame サーフェスをセットアップするときに BGRA ピクセル順序付けが使用されることです。

それでは、質問のために:

  1. Mac 上のいずれかのライブラリで使用されるピクセル形式を相互に互換性があるように変更することは可能ですか?
  2. 不可能な場合、純粋に Python で変換を行う最速の方法は何ですか?
  3. 最速の Python の方法でもフレームのほとんどの時間を無駄にする場合、C コードにインターフェイスして変換を行うにはどうすればよいでしょうか?
  4. C へのインターフェイスがどれほど複雑かにもよりますが、単に C で SDL インターフェイスを記述する代わりに、pygame を使用することにどの程度の意味があるのでしょうか?

.

0 投票する
3 に答える
3947 参照

python - Python での SVG と cairo、opengl、および rsvg の相互作用

Cairo、OpenGL、およびrsvgを使用して、多くの要素を含む巨大なSVGファイルをレンダリングします。rsvg 経由で cairo サーフェスに svg を描画し、OpenGL テクスチャを作成して描画します。すべて順調。そして今、SVG の要素を操作する必要があります。たとえば、座標から要素を推測したい。そして、SVG のパスの背景を変更したいと考えています。背景を変更する場合は、SVG DOM を変更して、何らかの形で SVG の一部を再レンダリングできると思います。しかし、ヒット テスト要素の場合、私は完全に恥ずかしい思いをします。

では、SVG と対話するための Python ライブラリはありますか? cairo と rsvg を使い続けることは可能ですか?どうすれば自分で実装できますか? または、SVG を OpenGL でレンダリングし、Python で操作するより良い方法はありますか? 私が望むのは、SVG をロードし、その DOM を操作してレンダリングすることだけです

0 投票する
3 に答える
2831 参照

python - カイロのコンテキストと永続性?

私はpycairoを使い始めたばかりで、次の興味深いエラーに遭遇しました。私が書いたプログラムは、単純な gtk ウィンドウを作成し、その上に四角形を描画し、任意の種類のキーボード入力でランダムな線を描画するコールバックを持っています。ただし、キーボード入力ごとに新しいコンテキストを作成する必要があるようです。そうしないと、プログラムが最初のキーボード入力を受け取った時点で (具体的には .stroke() 行で) エラーが発生します。問題がある場合、エラーは次のとおりです。「BadDrawable (無効な Pixmap または Window パラメーター)」。(詳細: serial 230 error_code 9 request_code 53 minor_code 0)

ご協力いただきありがとうございます!

(更新: 遊んでいて、次のことに気付きました: ウィンドウのサイズを変更すると、追加されたすべての新しいオブジェクトが削除されます (または、少なくとも表示されなくなりますか?) )

0 投票する
3 に答える
1949 参照

macos - MacportsライブラリをXCodeアプリケーションにリンクする

アプリの依存関係をアプリと分散させようとしています。

Macportsパッケージlibrsvg、boost、cairoを64ビットでインストールしました-SnowLeopardシステムにのみ。プログラムの.appバンドルを作成すると、/ optでライブラリを検索するアプリに含まれていないため、macportsと関連ライブラリがインストールされていないマシンでは機能しません。

静的リンクに--staticフラグを試しましたが、libcrt0エラーが発生しました。

MacPortsライブラリとその依存関係を単独配布に適したOSXアプリケーションにリンクするための最良の方法は何ですか?

0 投票する
2 に答える
3448 参照

c++ - iPhoneでCairoを使用していますか?

私は潜在的にクロスプラットフォームのC++アプリケーションでいくつかの作業を行っていますが、WindowsとOS Xの場合、Cairoは2Dグラフィックスのほとんどのニーズを満たし、プラットフォーム間で多くのコードを共有できるようになります。理想的な世界では、iPhone / iPadアプリで同じ(または非常によく似た)描画コードを使用できるようにしたいと思っています。

これは、Cairo for iPhoneを使用する前にコンパイルする必要があることを意味しますが、これをどのように実行するかについては、実際にはわかりません。

誰かが私を正しい方向に向けることができれば、私は非常に感謝するでしょう。

0 投票する
1 に答える
779 参照

c++ - 中心点と倍率で頂点を変換しますか?

私のアプリケーションはベクター描画アプリケーションです。OpenGL で動作します。代わりに Cairo 2D グラフィックス ライブラリを使用するように変更します。問題はズームです。openGL カメラとスケール ファクターを使用すると、次のような作業が行われます。

マウスの位置は次のように取得されます。

そこから三角形の VBO を描きます。これにより、パンとズームインが可能になります。Cairo は座標に基づいてしか描画できないため、変換を使用せずに頂点が適切にスケーリングおよびパンされるようにするにはどうすればよいでしょうか。基本的に GlOrtho は通常ビューポートを設定しますが、Cairo でこれを行うことはできないと思います。

GlOrtho は頂点を変更する代わりにビューポート マトリックスを変更できますが、同じ結果を得るために頂点を変更するにはどうすればよいでしょうか?

ありがとう

*ScreenToWorld から取得された頂点 P が与えられた場合、カメラと倍率に従ってスケーリングおよびパンされるように変更するにはどうすればよいでしょうか? 通常、OpenGL は本質的にこれを行うため

0 投票する
1 に答える
423 参照

c++ - GlOrtho Matrix の Cairo Matrix equivilrant?

私がこのようなことをすることを考えると:

結果は次のとおりです。http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml w 次のようなマトリックスを実現できますか。

http://cairographics.org/manual/cairo-matrix.html

私はこれを試しました:

しかし、うまくいきませんでした。GlOrtho がカイロで作成したのと同じマトリックスをどのように達成できますか? ありがとう

0 投票する
1 に答える
336 参照

c++ - 終了時のカイロエラーメッセージ

現在、Cairoを使用してVisual C++2010の既存のGDI/GDI +コードを置き換えるテストを行っていますが、正常に機能しているようですが、アプリケーションを閉じるたびにエラーメッセージが表示されます。

「CairoTest.exeの0x68e629dcでの初回例外:0xC0000005:アクセス違反の読み取り場所0xabababa7」

このエラーは、アプリケーションの実行中にcairo_paint(cr)を呼び出した場合にのみ発生します。この行をコメントアウトすると、表示されなくなります。これまでの私のアプリケーションの唯一のCairoコードは:

誰かが私が間違っている方向に私を向けることができますか?

私が言ったように、コードは正常に機能しているように見えますが、エラーが表示されるタイミングに関係なく、ただ耕すのは好きではありません。