問題タブ [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.
c++ - Qt はどのようにペインタ パスを描画しますか
Qt (5.4 バージョン) のクラス階層は素晴らしいものです。Qt のソースで解決策を見つけようとしましたが、調査の終点はQPaintEngine
. このクラスにはメンバーがあります:
このメンバーは単純なギャップ (何もしない) です。唯一の派生クラスは (Linux の実装) であり、メソッドQRasterPaintEngine
をオーバーライドしません。drawPath
誰かがアイデアを持っていますか?
パスをペイントする方法を見つけたいです。ペインターパス(簡易版(自己交差なし))はポリゴンに変換されていると思います。指定されたポリゴンが三角形化されます。三角測量の実装を見たいです。
c++ - Qtは、カスタムレンダリングされたコントロールに小さな「x」アイコンを描画します
関数でQtのカスタムコントロールを描画していpaintEvent
ます(したがってQPainter
、描画を行う必要があります)。ここで、マウスがその上にあるときにアニメーション化される小さな閉じる「x」アイコンを追加したいと思います。
QPainterPath
領域に入るマウスをテストするために使用できる「含む」メソッドがあることは知っていますが、小さな「x」を描画するにはどうすればよいか疑問に思っています。
マウスが領域に入ったときに「x」が動き回る (スピンするなど) ようにしたいのですが、これを実現する方法がわかりません。「x」を手動で描画しようとしましたが、非常に複雑に感じます..さらに回転させるのは面倒です。
カスタムレンダリングされたコントロール (できれば QPainterPath) に小さなアイコンを描画する最良の方法は何ですか?
c++ - Qt4.8(C++)を使用して楕円体と組み合わせて凸長方形を描画するには? (ボートを上から見た図)
現在、Qt 4.8 (C++) を使用してボートの上面図を描画しようとしています。ボートが動き回る QWidget を実装したいと思います。
したがって、ボートの上面図を描く必要があります。これは次のようになります (必要なのは外側のボーダーのみです)。
(ソース: 4vector.com )
現在、QPainterPath と組み合わせて QPainter を試していますが、楕円体と長方形を正しく組み合わせる方法がわかりません。別のオプションは、ポリゴンとして描画することですが、見栄えを良くするには多くのポイントが必要です.
また、長方形と 2 つの楕円体のみを使用したソリューション、または同様のソリューションがより美しいと思います。
ご協力いただきありがとうございます。
qt - 終点で曲線サブパスを閉じるQPainterPath
私がこれを行うとき、私は問題を抱えてQPainterPath
います:
曲線の下の領域も黒く描画します。使用してQPainterPath::closeSubpath()
もQPainterPath::moveTo(start)
役に立ちません。役立つ唯一のことは、曲線を最初に戻すことです。これはばかげており、アンチエイリアシングをオンにすると見栄えが悪くなります。
しかし、これは視覚的な問題だけではありません。QGraphicsItem::shape() に同じコードを使用すると、実際にはアイテムの形状に曲線の下の領域が含まれてしまいますが、これは望ましくありません。
現在(上記コードあり)
希望( で作成QPainerPath::quadTo(control, start)
)
QPainter
目的の曲線を2 回 (各方向から 1 回) 描画したため、曲線のエッジが悪いことに注意してください。
ここで何が間違っていますか?
c++ - QTでパスを消去する可能性のある落書き描画を実装する方法は?
QTでの描画のような落書きを実装するだけでなく、描画されたパスの一部を消去できる正しいアプローチは何でしょうか?
画像 (QImage) に楕円を点として追加することで描画が実装されている例を見てきましたが、私が理解している限り、描画された線を削除することはできませんか? 私が考えていることの 1 つは、QPainterPaths を実装することです。マウス ダウンで新しいパスを開始し、マウス移動でマウス位置のパスにポイントを追加し、マウス リリースでこのパスを終了します。描画イベントでは、QPainterPath の配列を調べて、それぞれを描画します。消去時には、配列内のすべての QPainterPath を調べて、いずれかの点が衝突するかどうかを確認します。衝突している場合は、配列からパス全体を削除して効果的に消去します。
それは有効なアプローチですか、それとも QPaths では実現できないものですか?
それを行うためのより良い、よりスマートな方法はありますか?