問題タブ [qpainterpath]

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

c++ - Qt はどのようにペインタ パスを描画しますか

Qt (5.4 バージョン) のクラス階層は素晴らしいものです。Qt のソースで解決策を見つけようとしましたが、調査の終点はQPaintEngine. このクラスにはメンバーがあります:

このメンバーは単純なギャップ (何もしない) です。唯一の派生クラスは (Linux の実装) であり、メソッドQRasterPaintEngineをオーバーライドしません。drawPath誰かがアイデアを持っていますか?

パスをペイントする方法を見つけたいです。ペインターパス(簡易版(自己交差なし))はポリゴンに変換されていると思います。指定されたポリゴンが三角形化されます。三角測量の実装を見たいです。

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

c++ - Qtは、カスタムレンダリングされたコントロールに小さな「x」アイコンを描画します

関数でQtのカスタムコントロールを描画していpaintEventます(したがってQPainter、描画を行う必要があります)。ここで、マウスがその上にあるときにアニメーション化される小さな閉じる「x」アイコンを追加したいと思います。

QPainterPath領域に入るマウスをテストするために使用できる「含む」メソッドがあることは知っていますが、小さな「x」を描画するにはどうすればよいか疑問に思っています。

マウスが領域に入ったときに「x」が動き回る (スピンするなど) ようにしたいのですが、これを実現する方法がわかりません。「x」を手動で描画しようとしましたが、非常に複雑に感じます..さらに回転させるのは面倒です。

カスタムレンダリングされたコントロール (できれば QPainterPath) に小さなアイコンを描画する最良の方法は何ですか?

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

c++ - Qt4.8(C++)を使用して楕円体と組み合わせて凸長方形を描画するには? (ボートを上から見た図)

現在、Qt 4.8 (C++) を使用してボートの上面図を描画しようとしています。ボートが動き回る QWidget を実装したいと思います。

したがって、ボートの上面図を描く必要があります。これは次のようになります (必要なのは外側のボーダーのみです)。

ボートの例
(ソース: 4vector.com )

現在、QPainterPath と組み合わせて QPainter を試していますが、楕円体と長方形を正しく組み合わせる方法がわかりません。別のオプションは、ポリゴンとして描画することですが、見栄えを良くするには多くのポイントが必要です.

また、長方形と 2 つの楕円体のみを使用したソリューション、または同様のソリューションがより美しいと思います。

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

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

qt - QPainter パスのベジエ曲線の一部のみを描画します

QPainter Curved Path の部分だけを描きたいです。私はこのようにパスを持っています:

これで、図 1に示すようにパスが描画されます。

ここに画像の説明を入力

しかし今、私は2つの点の間の曲線を描きたいだけです.p(1)とp(2)としましょう。

ベジェ曲線の一部だけを描くにはどうすればよいですか?

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

qt - 終点で曲線サブパスを閉じるQPainterPath

私がこれを行うとき、私は問題を抱えてQPainterPathいます:

曲線の下の領域も黒く描画します。使用してQPainterPath::closeSubpath()QPainterPath::moveTo(start)役に立ちません。役立つ唯一のことは、曲線を最初に戻すことです。これはばかげており、アンチエイリアシングをオンにすると見栄えが悪くなります。

しかし、これは視覚的な問題だけではありません。QGraphicsItem::shape() に同じコードを使用すると、実際にはアイテムの形状に曲線の下の領域が含まれてしまいますが、これは望ましくありません。

現在(上記コードあり)

ここに画像の説明を入力

希望( で作成QPainerPath::quadTo(control, start))

ここに画像の説明を入力

QPainter目的の曲線を2 回 (各方向から 1 回) 描画したため、曲線のエッジが悪いことに注意してください。

ここで何が間違っていますか?

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

c++ - QTでパスを消去する可能性のある落書き描画を実装する方法は?

QTでの描画のような落書きを実装するだけでなく、描画されたパスの一部を消去できる正しいアプローチは何でしょうか?

画像 (QImage) に楕円を点として追加することで描画が実装されている例を見てきましたが、私が理解している限り、描画された線を削除することはできませんか? 私が考えていることの 1 つは、QPainterPaths を実装することです。マウス ダウンで新しいパスを開始し、マウス移動でマウス位置のパスにポイントを追加し、マウス リリースでこのパスを終了します。描画イベントでは、QPainterPath の配列を調べて、それぞれを描画します。消去時には、配列内のすべての QPainterPath を調べて、いずれかの点が衝突するかどうかを確認します。衝突している場合は、配列からパス全体を削除して効果的に消去します。

それは有効なアプローチですか、それとも QPaths では実現できないものですか?

それを行うためのより良い、よりスマートな方法はありますか?