![]() |
Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'
Hallo Leute,
ich hab schon danach gegoogle aber keine für mich passende Lösung gefunden. Ich hoffe ihr könnt mir schnell helfen. Hab 3 Units: 1. die Form 2. Klasse TDiagramm 3. Koordinaten für Canvas TPunkt Hab jetzt gedacht, dass ich einfach eine Privatevariable "Canvas: TCanvas;" erstelle bei TForm, die auch noch Create und dann dem Constructor von TDiagramm überliefere, damit er dann die Methoden von Canvas hat und dann auch noch auf der Form malen kann. So sieht es ungefähr aus:
Delphi-Quellcode:
Tut mir leid, dass ich soviel code einbringe, ich hoffe ihr könnt mein Problem folgen und am Ende entdecken :)
--------------Unit1---------------------------
procedure TForm1.FormCreate(Sender: TObject); var I: Integer; begin Canvas := TCanvas.Create; Diagramm := TDiagramm.Create(Canvas); Diagramm.Zeichnen(Punkte,clRed); //Punkte ist nur ein Array vom Typ TPunkt, ist nicht wichtig... end; --------------Unit 2--------------------------- constructor TDiagramm.Create(UserCanvas:TCanvas); begin inherited Create; Canvas := UserCanvas; // Privatevariable Canvas: TCanvas; end; procedure TDiagramm.Zeichnen(Daten:array of TPunkt;Color:TColor); var I:Integer; begin Canvas.Pen.Color := Color; Canvas.Pen.Width := 1; Canvas.MoveTo(Daten[0].X,Daten[0].Y); {Und hier kommt es zum Fehler: "Im Projekt XX.exe ist eine Exception der Klasse EInvalidOperation mit der Meldung 'Leinwand/Bild erlaubt kein Zeichnen' aufgetreten."} for I := 1 to high(Daten) do begin Canvas.LineTo(Daten[I].X,Daten[I].Y); end; end; Das wäre toll Danke schonmal |
Re: Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'
Du hast einen Denkfehler. Du erstellst einfach ein TCanvas und gehst davon aus das wenn du darauf zeichnest dies dann auf dem Bildschirm sichtbar wird an der Stelle wo dein TForm ist. Aber wie kommst du darauf? Woher soll das Programm denn wissen das dein TCanvas die Leinwand des Formulars sein soll und nicht die für ein TBitmap, den Drucker etc.?!
|
Re: Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'
Leite TDiagramm von TGraphicControl ab, dann hat diese einen eigenen Canvas
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz