3

Delphi TGraphicControl ペイント プロシージャを作成しています。

キャンバスを作成し、それをグラフィック領域にストレッチドローします。それはうまくいきます。

次に、別の Stretchdraw でグラフィック領域にこれを繰り返しますが、最初の Stretchdraw の領域に描画され、指示したとおりにグラフィック領域には描画されません。

TGraphicControl のキャンバスに両方のストレッチドローを並べて配置する方法はありますか?

4

1 に答える 1

10

TCanvas.StretchDraw指定された長方形領域のキャンバスにグラフィックをペイントします。四角形は、キャンバスの境界内にある必要がありますが、そうである必要はありません。キャンバスの所有者がそれらの境界を決定します。あなたの場合、キャンバスの所有者がTGraphicControlオブジェクトのように聞こえます。

2 つのグラフィックを並べて描画する場合、最初のグラフィックの描画に使用する は、2 番目のグラフィックに使用TRectする に隣接する長方形を表す必要があります。TRectまだコードを表示していないため、何が問題なのかを判断するのは困難です。

の両方の呼び出しに同じTRect変数を使用する場合は、呼び出し間で四角形の位置を変更するStretchDraw必要があります。まず、プロパティを変更します。Left

例えば:

var
  r: TRect;
begin
  r := ClientRect;
  // First rectangle takes up left half of control
  r.Right := r.Right div 2;
  Canvas.StretchDraw(r, graphic1);

  // Shift the rectangle to the right half
  r.Left := r.Right;
  r.Right := ClientRect.Right;
  Canvas.StretchDraw(r, graphic2);
end;
于 2009-01-21T23:20:08.263 に答える