2

MD シミュレーション コードの単純な 2D 視覚化モジュールに取り組んでいます。私がやろうとしているのは、以下を使用してシミュレートされた分子の位置を描画することです:

myPainter.drawEllipse(myQPoint,myRx,myRy)

そして、その部分は私の視覚化ウィジェットでうまく機能します。たまたま問題だったのは、各分子の ID (整数) を表すテキストを書くことです。

myPainter.drawText(myPosPoint,QString::number(mySoftMolecule2D->getID()));

テキストを描画しますが、大きすぎます。myPainterこれはおそらく、分子を簡単に描画するために cooridantes スケーリングを使用する必要があるためです。

myPainter.scale(myWidgetWidth_ / simSizeX_ , myWidgetHeight_ / simSizeY_);
//    myWidgetWidth_ is much bigger simSizeX_
//    myWidgetHeight_ is much bigger simSizeY_

スケーリング座標を実行する前に、そのような行を入れてみましたmyPainter:

QFont myFont;
myFont.setPointSizeF(1.0); // values less than 1.0 doesn't work
myFont.setFamily("Courier");
myPainter.setFont(myFont);

しかし、分子のラベルはまだ大きすぎます。

助けてくれてありがとう。

4

2 に答える 2

0

固定ピクセルサイズに基づいてフォントのサイズを変更するため、の代わりにQFont :: setPixelSize(int pixelSize)setPointSize()を使用してみてください。

于 2010-10-16T17:49:57.487 に答える
0

テキストを描画する位置を覚えてから、2段階で描画します。最初は分子で、2番目はテキストです。分子を描画する前に、ペインターの状態を保存し、テキストを描画する前に復元します。これにより、分子をスケーリングできるようにしながら、テキストのスケーリングを防ぐことができます。

于 2010-10-18T16:24:42.700 に答える