問題タブ [qpainter]

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 投票する
2 に答える
3241 参照

qt - QPainter::drawPolyLine で角を丸くする方法

現在、QGroupBox をベースとして使用し、ペイント イベントで新しいフレームを描画するカスタム コンテナー ウィジェットを作成しようとしています。コーナー。誰かが drawPolyLine でそれを行う方法に出くわしたことがありますか、またはそれらを実装するためにコードを書き直す必要がありますか?

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

c++ - QPainterは色を変えません

私は学んでいQtます。Qtチュートリアルの第11章で、「ショットが空中にあるときに大砲の色を変更する」という演習を実現できていません。paintCannon関数の変更を実装することを選択しました(以下)。以下の私のコードの何が問題になっていますか?

Qpainter私は最初にのことを疑っsaverestore、何か間違ったことをしているかもしれないので、私はそれらをコメントアウトしましたが、結局何も塗り直しませんでした。

ありがとう。

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

qt - QGraphicsItem の「グラフィック」のシフト

以下の図の上半分に示すように、カスタム グラフィックを含む QGraphicsItem があります。ここで、赤い円はshape()項目です。

qgraphicsitem

グラフィックを保持する方法はありますが、図の下半分に示すようにシフトするだけですか?

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

qt - QWidget に線を引く

単一の水平の黒い線で構成されるウィジェットを作成しようとしています。このウィジェットは、行全体を占めるように QGridLayout に配置され、セパレータとして機能します。レイアウトがインストールされているウィジェットのサイズが変更されるので、それに合わせてラインのサイズを変更したいと思います。QLine、QGraphicsView、QImage など、いくつかのオプションをチェックアウトしましたが、線を描画できないようです。サイズを変更してもかまいません。

これを独自のクラスに実装しているので、必要に応じて再利用できます。誰でもこれで私を助けてもらえますか?

この場合は、前述の がインストールされてparentいる親です。QWidgetQGridLayout

0 投票する
0 に答える
1032 参照

linux - Qtで大量のCPUを消費するペイントイベント

Qt の Paintevent に問題があります。Paintevent スレッドは、開始時にほぼすべての CPU を使用しています。

私のメインウィジェットのコンストラクターのコード。

そして私のペイントイベントでは、

Paintevent には何もありません!!!しかし、このコードを実行すると、CPU が 100% 消費されます [ CPU is Single core 1 Ghz Processor]。

そして、pRedraw_Timer->stop()更新を呼び出すこの pRedraw_Timer を stop( ) すると、たとえば、ボタンをクリックすると、使用率がほぼ瞬時に 1% または 10% 未満になります!!!!

私の要件は、シリアル ポートからの入力に応じてグラフをプロットすることです。したがって、更新を使用してビューを常に更新する必要があります。ただし、プロット中に、CPUが割り込みを処理するために切り替わるため、割り込み(優先度が高い)がプロットを妨げているようです。割り込み処理後、作図は正常に戻ります。私の質問は、このペイントイベント スレッドがまったく何もしていないにもかかわらず、100% の CPU を消費する方法と理由です。このシナリオを変更するにはどうすればよいですか?

編集(kuba ober 用): 他にもいくつかの機能とスロットがあります。しかし、それを呼び出すか、シグナルをトリガーしない限り、何も呼び出されません。私はまったく何もしていません。プログラムを実行した直後に、すべての CPU を消費します。メインダイアログのコンストラクターのみが呼び出されることに注意してください。

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

c++ - QPainterPaths の効率的なオフスクリーン レンダリング (OpenGL および非 OpenGL ソリューションが必要)

  1. 私のアプリケーションではQPainterwidget
    • によって作成されQPainterPaths、描画される事前計算されたパスが含まれています
    • widget現在、QWidgetではなくQGLWidgetですが、これは変更される可能性があります。
  2. 絵を画面外に移動して、チャンクジョブに分割しようとしています
    • 各チャンクをにペイントしQImage、最後にすべての画像をに描画したいwidget
    • QPainterPathsすでにチャンク化されているため、これは問題ではありません
    • 問題は、描画が描画よりもQImages5 倍遅いことです。QWidget
  3. 私が行ったいくつかのベンチマークテスト
    • 時間の値は、複数回の実行の丸め平均です
    • テスト チャンクにはQPainterPaths、それぞれ約 150 の直線セグメントを持つ100 が含まれます
    • 約 15,000 のパスがQPainter::Antialiasingレンダー ヒントで描画され、QPenラウンド キャップとラウンド ジョインが使用されます
  4. QPainterPaths私のソースは(および線幅+色;一部は描画され、一部は塗りつぶされていることを覚えておいてください)
    • QPainter他のすべての種類の描画サポートは必要ありません
    • QPainterPathsに描画できる別のものに変換できますOpenGL buffer。これは良い解決策です。
    • 私はOpenGLオフスクリーン レンダリングに詳しくありませんが、さまざまな種類の OpenGL バッファがあることを知っています。そのほとんどは 2D イメージ レンダリング用ではなく、頂点データ用です。

(*) These 2 lines have been added afterwards and are solutions to the problem!

アプリケーションを 2 つのバージョンでコンパイルしたいので、OpenGL ベース以外のソリューションも教えていただければ幸いです。また、ソリューションを非 GUI スレッド でレンダリングできるようにしたいと考えています。OpenGLnon-OpenGL


チャンクを画面外に効率的に描画する良い方法はありますか? のペイント デバイスとして使用できる(オフスクリーン バッファー) のオフ
スクリーン カウンター部分はありますか?QGLWidgetOpenGLQPainter

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

c++ - QPainterinitペインターとそれを使用する

painterというクラスを作成QPainterし、コンストラクターでpを作成QMainWindowしてパラメーターとしてを渡しました。

したがって、mainwindow.hiに次のように追加しました。

mainwindow.cppに追加しました

Painter.h

およびpainter.cpp

何も描かない。

私が行った場合

線をレンダリングし、2〜3秒後に閉じます

それを機能させる唯一の方法は、

しかし、すべてのフレームでpを初期化するのはばかげているようです、それはそのように機能します。画面を一度だけ初期化する方法や、開始を機能させる方法はありますか?

ありがとう。

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

qt - qtでQPainter::drawPixmapを使用してピックスマップを描画する

QPainter :: drawPixmapを使用してピックスマップをペイントすることはできますが、サイズ設定に問題があります。ピックスマップは多くの異なるシーンに描かれています。シーンの中には非常に大きいものと非常に小さいものがあります。これにより、シーンのサイズ(またはビューポートと呼ばれるもの)に応じて、描画されるピックスマップが非常に大きくまたは非常に小さく見えるようになります。配置するシーンのサイズに関係なく、ピックスマップを毎回同じサイズで表示する必要があります。

基本的には、ポイントの長さと幅をピクセル単位で指定できるdrawPointと同じように機能させて、ポイントが毎回同じサイズに見えるようにします。

次のコード行は、サブクラス化したQGraphicsItemのペイント関数内にあります。

pos()がQPointFを返す場合、でピックスマップを描画する必要があります。

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

qt - Qt 4.7 - paintEvent を使用して動的フィードバックで 2 点線を描画する

だから私は2点の間に線を引こうとしています。マウスの左クリックで線が開始され、マウスの動きに合わせて線を動的に描画したいと思います (線のプレビューのように)。もう一度マウスを左クリックすると、線が永続的に描画されます。QPaintEvents については他にも多くの投稿があることを知っており、使用されているテクニックのいくつかを組み合わせましたが、何らかの理由でキャンバスに何も描画されていません。以下はコードです:

どんな助けでも大歓迎です!ありがとう!ジョシュ

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

qt - Qtウィジェットに描画したい「長方形」が表示されないのはなぜですか?

基本的に、ダイアログウィンドウウィジェットに長方形を表示したいと思います。別の質問を参考にして、QLabelを使用してペイントするフレームワークを適応させようとしました(プロセスは全体的に非常に複雑に見えます)。

ダイアログボックスのクラスのメンバーを作成することから始めました。

ダイアログボックスのコンストラクター:

それを機能させるために、ラベルで作成された「長方形」をウィジェットに表示するためのボタンをダイアログボックスに与えました。このボタンの「押された」信号を、次のことを行うスロットに接続しました。

残念ながら、ボタンを押してもウィジェットに何も表示されません。ここで何が欠けていますか?