AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warum kann ich auf canvas nicht zeichnen

Ein Thema von R2009 · begonnen am 21. Jun 2009 · letzter Beitrag vom 21. Jun 2009
Antwort Antwort
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Warum kann ich auf canvas nicht zeichnen

  Alt 21. Jun 2009, 10:29
Hi,
ich versuche sowas wie einen 3d canvas hinzubekommen.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tpoint3d = record
     x,y,z:real;
  end;
  Tcanvas3d = class(Tcanvas)
     Function Calc3d(p:tpoint3d;angle,multi:real):tpoint;
     Procedure triangle3d(p1,p2,p3:tpoint3d);
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Function Tcanvas3d.Calc3d(p:tpoint3d;angle,multi:real):tpoint;
begin
  result.x:=round(multi*(p.x+p.z*cos(angle)));
  result.y:=round(multi*(p.y+p.z*sin(angle)));
end;

Procedure Tcanvas3d.triangle3d(p1,p2,p3:tpoint3d);
var p01:array [0..2] of tpoint;
begin
  p01[0]:=Calc3d(p1,Pi / 7,1);
  p01[1]:=Calc3d(p2,Pi / 7,1);
  p01[2]:=Calc3d(p3,Pi / 7,1);
  polygon(p01); // ----->Hier meckert das Programm zur Laufzeit: kann nicht auf auf Leinwand/Bild zeichnen
end;

procedure TForm1.Button1Click(Sender: TObject);
var s:Tcanvas3d;t:tpoint;p1,p2,p3:tpoint3d;
begin
  s:=Tcanvas3d.Create;
  p1.x:=100;p1.y:=100;p1.z:=0;
  p2.x:=200;p2.y:=100;p2.z:=0;
  p3.x:=200;p3.y:=150;p3.z:=0;
  s.triangle3d(p1,p2,p3);
  //canvas.Assign(s);
  s.Free;
end;

end.
Kann mir jemand sagen was ich hier falsch mache? Das Programm meckert zur Laufzeit beim Versuch ein Polygon zu zeichnen..

Danke im Vorraus
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Warum kann ich auf canvas nicht zeichnen

  Alt 21. Jun 2009, 10:35
Du kannst einen Canvas nicht als isoliertes Element verwenden. Ein Canvas gehört immer zu einem DC, zu dem er lediglich eine Schnittstelle bietet - er ist selbst jedoch (auch wenn es der Name vermuten ließe) KEINE eigenständige Zeichenfläche mit eigenem Bildpuffer. In deinem Fall würde ich eher auf einem TBitmap aufbauen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Warum kann ich auf canvas nicht zeichnen

  Alt 21. Jun 2009, 10:44
Okay danke hab ich nicht gewusst.
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz