3 Stimmen

Wie kann ich zwei Grafiken nebeneinander auf einem benutzerdefinierten TGraphicControl dehnen und zeichnen?

Ich schreibe meine Delphi TGraphicControl Paint-Prozedur.

Ich erstelle eine Leinwand und ziehe sie auf die Grafikfläche. Das funktioniert gut.

Dann wiederhole ich dies mit einem weiteren Stretchdraw auf die Grafikfläche, aber es wird im Bereich des ersten Stretchdraws gezeichnet und nicht auf die Grafikfläche, wie ich es anweise.

Gibt es eine Möglichkeit, die beiden Stretchdraws nebeneinander in der TGraphicControl-Leinwand zu platzieren?

10voto

Rob Kennedy Punkte 158781

TCanvas.StretchDraw malt eine Grafik auf eine Leinwand in einem bestimmten rechteckigen Bereich. Das Rechteck sollte, muss aber nicht, innerhalb der Grenzen der Leinwand liegen. Der Eigentümer der Leinwand legt diese Grenzen fest. In Ihrem Fall scheint der Besitzer der Leinwand der TGraphicControl Objekt.

Wenn Sie möchten, dass zwei Grafiken nebeneinander gemalt werden, dann müssen Sie die TRect die Sie zum Zeichnen der ersten Grafik verwenden, sollte ein Rechteck darstellen, das an die TRect die Sie für die zweite Grafik verwenden. Sie haben noch keinen Code gezeigt, daher ist es schwer zu sagen, was schief läuft.

Wenn Sie denselben TRect Variable für beide Aufrufe von StretchDraw dann müssen Sie sicherstellen, dass Sie ändern. die Position des Rechtecks zwischen den Aufrufen - ändern Sie die Left Eigentum, für den Anfang.

Zum Beispiel:

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;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X