Как мне растянуть две графики рядом друг с другом на пользовательском TGraphicControl? - PullRequest
3 голосов
/ 22 января 2009

Я пишу свою процедуру рисования Delphi TGraphicControl.

Я создаю холст и растягиваю его в графической области. Хорошо работает.

Затем я повторяю это с другим растяжкой в ​​графической области, но он рисуется в области первого растяжения, а не в графической области, как я его направляю.

Есть ли способ разместить оба растягиваемых рисунка рядом друг с другом на холсте TGraphicControl?

1 Ответ

10 голосов
/ 22 января 2009

TCanvas.StretchDraw рисует графику на холсте в заданной прямоугольной области. Прямоугольник должен, но не должен быть, в пределах границ холста. Владелец холста определяет эти границы. В вашем случае кажется, что владельцем холста является TGraphicControl объект.

Если вы хотите, чтобы два рисунка были нарисованы рядом друг с другом, то 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;
...