問題タブ [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 投票する
1 に答える
257 参照

c++ - 印刷時に QPainterPath テキストが正しくレンダリングされない

Qt 5.4.2 では、QPainterPathテキストをレンダリングするために を使用しています。これは、テキストが文字に分割され、各文字が曲線に沿ってレンダリングされる可能性があるためです。プラットフォーム間および印刷時に異なる結果が表示されます。テキストをレンダリングするために、とメソッドQPainterを使用してみました。drawPath()drawPolygon()

OS X 10.11.6:

  • drawPath: インド語のテキストの一番上の行には、印刷時と印刷時の両方で、あってはならないギャップがありQGraphicsViewます。
  • drawPolygonQGraphicsView: 一番上の行は、印刷時と印刷時の両方で、あるべき姿でしっかりしています。ただし、印刷すると、テキスト内のさまざまなランダムなポイントの間に極細の線がたくさん表示されます。

ウィンドウ 7:

  • drawPath: Mac と同じ: とQGraphicsView印刷時の両方で、一番上の行にギャップがあります。
  • drawPolygon: これQGraphicsViewは正しい (ギャップなし) ですが、Mac で印刷したときのように極細の線はありませんが、印刷するとまだ上部の行にギャップがあります。したがって、 を使用して印刷するとdrawPolygon、 を使用して印刷した場合と同じ誤った出力が生成されますdrawPath

これらの問題を示すサンプル アプリを次に示します。QGraphicsItemサンプル アプリのサブクラスのペイント コードは次のとおりです。

QGraphicsItemシーンを作成し、2 つのサブクラス オブジェクトをシーンに追加するサンプル アプリのコードを次に示します。

QGraphicsViewレンダリングされたものと印刷されたものを同一で正しいものにするにはどうすればよいですか? OS X と Windows で異なるソリューションが必要な場合でも、問題ありません。または、これを解決するために Qt の新しいバージョンが必要な場合は、Qt をアップグレードできます。

アップデート:

Kuba Ober が示唆したように、以下のこの単純なアプリで印刷のバグを示しました。ここから先に進む方法がわかりません。

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

c++ - qt ラジアンの角度を使用して 2 点間に円弧を描く

2 点間に円弧を描きたい。2点の位置とラジアンでの角度を知っています。円弧を効果的に描く前に、円の中心を計算する小さなプログラムを書くことに成功しました。しかし、検証するために円を描くとき、​​ラジアンに小さな値を使用すると、円の線は指定された 2 つの点と交差しません。

ラジアン = 1.0 ラジアン = 0.002

ただし、2 点から円の中心までの距離は、計算された半径に等しくなります。どこが間違っていますか?

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

c++ - QTで複数の点を通る滑らかな曲線を描く方法は?

QT で一連の点を通る滑らかな線を描く方法はありますか? ポイントの数と位置は実行時に設定されます。

現在、パスを作成して、ポイントからポイントへの lineTo を含む QPainterPath を描画します。render-hints アンチエイリアシングを使用していますが、パスはまだギザギザです。

この種の曲線パスを提供するように見える QSplineSeries を見てきましたが、私が使用している QT バージョンである Qt4.8 では利用できません。

頻繁に提案されている別のオプションは、ベジエ曲線を使用することですが、それらは 1 つの開始点と終了点、および 2 つの制御点を使用するため、すべてのセグメント (すべての lineTo) に対して計算し、何らかの形で私が持っていない制御点を計算する必要があります。この時点で。

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

qt5 - Qt5で特別な円を描くにはどうすればよいですか?

下の画像のような特殊な円を描きたいです。

しかし、 を使って円弧や楕円を描く方法がわかりません setDashPattern

画像:
ここに画像の説明を入力

最初は、色付きの円を描いて、それを覆うように透明な四角形や線を描くだけでうまくいくと思っていました。ただ、過ぎてしまったのですが…

次に、以下のコードを試しました。

しかし、これは私がやりたいことではありません。

このようなリングを描く方法を知っている人はいますか?

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

c++ - QPainterPath サブパスを別の色にするにはどうすればよいですか?

タイトルが示すように、QPainterPath のサブパスを QGraphicsPathItem に適用されるさまざまな色に色付けする方法を探しています。または、QGradient QPen を使用して PathItem に沿って色を変更するだけです。

最終的に、外部変数に基づいて色を変更する単一の線を視覚的に描画できるようにする正しい解決策を見つけようとしています。

QGraphicsScene を使用してすべてを描画しています。

私の現在のソリューションでは、複数の QGraphicsPathItems を作成し、それぞれの QPens でそれぞれ異なる色を付けています。データを取得すると、それらの PathItem に関連付けられた PainterPath に値を入力します。これにより、必要な多色の線が得られますが、線が目に見えて切断されています。

色の変更中に QPainterPath のサブパスを非表示にするか、単一の PathItem に適用されるグラデーションを変更できるようにする必要があります。または、私が見逃している別のアプローチがあるかもしれません。どんな助けでも素晴らしいでしょう。

-編集:

私の質問の解決策に記載されているように、これは私が現在描画を行っている方法です。ここでも、GraphicsScene を使用していることに注意してください。

GraphicsScene でのベアリング式の計算により、不規則な結果が生成される

これが私がやろうとしていることです。 望ましい結果

ご覧のとおり、線は外部変数によって描画されると色が変わります。線が常にまっすぐであるとは限らないため、Qgradient が機能しない可能性があります。色は線に沿って流れる必要があります。

何が起こっているかは次のとおりです。

ここに画像の説明を入力

ご覧のとおり、赤い線 (PathItem) は、最後に表示されていた場所から新しい位置にジャンプします。

動作をより明確にするために、この線が時間の経過とともに描かれていると想像してください。赤で始まり、すぐに変数が設定され、描画される線分の色がオレンジに変わります。線の赤い部分は元のままなので、変数がその時点でどのような状態であったかを歴史的に見ることができます。さまざまな時点で、変数が調整され、それに応じて線の新しい部分に適用される色が更新されます。

線の描画が終了したら、それを見て、色がいつ変化したかを確認できます。

これがすべて理にかなっていることを願っています。