AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Canvas Zeichnung drehen
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas Zeichnung drehen

Ein Thema von Gnaaman · begonnen am 1. Jun 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Gnaaman

Registriert seit: 31. Mai 2006
14 Beiträge
 
#1

Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:18
Hallo ich wollte fragen ob es irgendwie möglich ist eine canvas zeichnung um 90 grad zu drehen!?

wollte z.b.: diese männchen hier so drehen das es auch sieht als ob es liegt
Delphi-Quellcode:
  Form1.Canvas.Ellipse(xpos-10,510,xpos+10,530);
  Form1.Canvas.moveto(xpos,530);
  Form1.canvas.LineTo(xpos,560);
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#2

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:29
90° in welche Richtung? Im einen Fall einfach X/Y-Koordinaten tauschen.

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
Gnaaman

Registriert seit: 31. Mai 2006
14 Beiträge
 
#3

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:31
richtung ist miregal soll sich halt hinlegen so das männchen... das problem besteht heirbei nur das das flüssig aussehen soll also soll es in mehreren schritten geschenen...

das heißt das man auch sieht wie das männchen sich "hinlegt"...

weisst du wie man das machen kann? normale bnidler darf ich ledier nicht benutzen
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#4

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:33
Einen Timer vielleicht? Dann klappt das mit dem Tauschen der Koordinaten aber nicht mehr.

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:33
http://www.delphipraxis.net/internal...ct.php?t=38391
Mit diesen Funktionen kannst du einen Punkt um den Ursprung drehen.
Wenn du um einen anderen Punkt drehen möchtest, dann musst du den Punkt
zuerst verschieben, dann drehen und wieder zurückverschieben.
Andreas
  Mit Zitat antworten Zitat
Gnaaman

Registriert seit: 31. Mai 2006
14 Beiträge
 
#6

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 17:37
ah das sieht ja schon mal gut aus danke für die hilfe da ich aber grade erst mit delphi angefangen habe weiss ich nicht genau wie ich mein männchen da jetz einbringen soll... ist mir alles ein wenig unübersichtlich..könntest du mir das ein wenihg veranschaulichen?
  Mit Zitat antworten Zitat
Gnaaman

Registriert seit: 31. Mai 2006
14 Beiträge
 
#7

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 18:36
so habe jetz das männchen fertig und muss es nur noch drehen dafür soll eine procedure Tmann2.hinlegen in meiner klasse tmann2 erstellt werden...

das ist der bisherige code :
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
 TMann2 = class
 xpos,ypos : integer ;

 constructor create(Mx,My :integer);
 procedure Normal;
end;


var
  Form1: TForm1;
  Mann2: TMann2;

implementation

{$R *.dfm}

procedure TMann2.Normal;
 begin
  Form1.Canvas.Ellipse(xpos-10,ypos,xpos+10,ypos+20);
  Form1.Canvas.Moveto(xpos,ypos+20);
  Form1.Canvas.LineTo(xpos,ypos+50);
  Form1.Canvas.LineTo(xpos+10,ypos+70);
  Form1.Canvas.Moveto(xpos,ypos+50);
  Form1.Canvas.LineTo(xpos-10,ypos+70);
  Form1.Canvas.Moveto(xpos,ypos+25);
  Form1.Canvas.LineTo(xpos-5,ypos+45);
  Form1.Canvas.Moveto(xpos,ypos+25);
  Form1.Canvas.LineTo(xpos+5,ypos+45);
 end;

constructor TMann2.create (Mx,My:integer);
 begin
  xpos:=Mx;
  ypos:=My;
 end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Mann2:=TMann2.create(400,300);
Mann2.Normal;
end;

end.
also wie dreh ich das jetz mti dieser funktion weiss echt nicht wie ich das machen soll!?
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#8

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 18:56
Delphi-Quellcode:
function RotateCCW(position,axis: TPoint; alpha: single): TPoint;
var relative: TPoint;
begin
  relative := Point(position.x - axis.x,position.y - axis.y);
  result.x := axis.x + round(relative.x*cos(alpha) - relative.y*sin(alpha));
  result.y := axis.y + round(relative.x*sin(alpha) + relative.y*cos(alpha));
end;
sowas da ? (is nur kurz skizziert)


edit: jaja.. die fehlerchen...
Power is nothing without TControl
  Mit Zitat antworten Zitat
Gnaaman

Registriert seit: 31. Mai 2006
14 Beiträge
 
#9

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 19:00
weiss ich ja nicht genau ich weiss nicht genau was diese funktion bewirkt... deswegen wäre ich echt über ein wenig hilfe dankbar oder wäre es jetz viel arbeit dieses männchen mit der funktion zum drehen zu erweitern..wäre echt eine super hilfe....
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#10

Re: Canvas Zeichnung drehen

  Alt 1. Jun 2006, 19:13
eins vorab: Vorzeichenfehler nicht ausgeschlossen

Ich weiß ja nicht wie Fit du in Mathe bist, aber die Funktion wendet nur eine Rotationsmatrix an. Versuch dir jetzt mal ein normales Koordinatensystem vorzustellen, in dem ein Punkt (2|1) eingezeichnet ist. Jetzt rotiere ich den Punkt um 30° am Ursprung

neues x = 2 *cos(30°) - 1 *sin(30°)
neues y = 2 *sin(30°) + 1 *cos(30°)

sin(30°) = 0.5
cos(30°) = wurzel(3)/2 = ~ 1.732 / 2

neues x = 2 *(1.732 / 2) - 1 *0.5
neues y = 2 *0.5 + 1 *(1.732 / 2)

neues x = 1.732 -0.5 = 1.232
neues y = 1 + 0.866 = 1.866

damit ist dein Punkt bei (1.232|1.866)

wenn dus dir aufzeichnest, siehste, dass die zwei halbgeraden vom Ursprung aus den Winkel 30° einschließen.

Edit: Sprachfehler entfernt *duck*
Power is nothing without TControl
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:30 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