AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

Ein Thema von sarte · begonnen am 25. Jan 2010 · letzter Beitrag vom 25. Jan 2010
Antwort Antwort
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#1

Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

  Alt 25. Jan 2010, 21:31
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:
--------------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;
Tut mir leid, dass ich soviel code einbringe, ich hoffe ihr könnt mein Problem folgen und am Ende entdecken
Das wäre toll

Danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

  Alt 25. Jan 2010, 21:35
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.?!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.802 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Canvas Problem: 'Leinwand/Bild erlaubt kein Zeichnen'

  Alt 25. Jan 2010, 21:36
Leite TDiagramm von TGraphicControl ab, dann hat diese einen eigenen Canvas
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf