AGB  ·  Datenschutz  ·  Impressum  







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

Graphic Control um 90 grad drehen

Ein Thema von PAS_pro · begonnen am 6. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
PAS_pro

Registriert seit: 6. Nov 2007
4 Beiträge
 
#1

Graphic Control um 90 grad drehen

  Alt 6. Nov 2007, 15:51
Ich muß ein Graphic Control (Canvas) um 90 Grad drehen und dieses Canvas wird zur Laufzeit ungefähr 25 mal pro Sekunde neu gezeichnet!!!

Gemeint ist nicht eine Bitmap oder JPG die um 90 Grad gedreht werden soll (dazu gibt es ja jede Menge Lösungen hier im Forum)

Für Hilfe oder Anregungen wäre ich sehr dankbar
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Graphic Control um 90 grad drehen

  Alt 6. Nov 2007, 16:09
Vlt. hilft dir die Win-API Funktion "SetWorldTransform" weiter ...
Chris
  Mit Zitat antworten Zitat
PAS_pro

Registriert seit: 6. Nov 2007
4 Beiträge
 
#3

Re: Graphic Control um 90 grad drehen

  Alt 6. Nov 2007, 16:32
kannst du das konkretisieren
oder
besser noch ein demo source code beifügen

vielen dank im voraus
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Graphic Control um 90 grad drehen

  Alt 7. Nov 2007, 07:18
In der Hilfe von Delphi solltest du darüber etwas finden. Oder im MSDN ...

Google + SetWorldTransform
http://www.codeproject.com/gdi/setworldtransform().asp
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Graphic Control um 90 grad drehen

  Alt 7. Nov 2007, 08:04
Für die Faulen hab ich mal kurz ein Bsp.
Auf der Form befinden sich nur eine PaintBox und ein SpinEdit (was den Winkel angibt).

Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  XF: TXForm;
  x0, y0: Integer;
  q: Double;
begin
  x0 := PaintBox1.Width div 2;
  y0 := PaintBox1.Height div 2;
  q := SpinEdit1.Value / 180 * 3.1415926;

  XF.eM11 := cos(q);
  XF.eM12 := sin(q);
  XF.eM21 := -sin(q);
  XF.eM22 := cos(q);
  XF.eDx := x0 - cos(q) * x0 + sin(q) * y0;
  XF.eDy := y0 - cos(q) * y0 - sin(q) * x0;

  With PaintBox1.Canvas do
  begin
    SetGraphicsMode(Handle, GM_ADVANCED);
    SetWorldTransform(Handle, XF);

    Rectangle(x0 - 20, y0 - 10, x0 + 20, y0 + 10);
  end;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
  PaintBox1.Repaint;
end;
Wie gesagt, nur ein schnell zusammengebasteltes Beispiel. Aber wem's Hilft
Chris
  Mit Zitat antworten Zitat
PAS_pro

Registriert seit: 6. Nov 2007
4 Beiträge
 
#6

Re: Graphic Control um 90 grad drehen

  Alt 8. Nov 2007, 13:06
Vielen Dank Deep-Sea
für den demo source code, aber leider bringt er nicht den gewünschten Effekt.
Es dreht sich nur der Inhalt der Komponente aber nicht die gesamte Komponente. Ich habe ein kleines demo progrämchen beigefügt, wo du es sehr schön sehen kannst.

und hier der quell code im program:

procedure TForm1.MMLevel1Paint(Sender: TObject);
var
XF: TXForm;
x0, y0: Integer;
q: Double;
begin
x0 := MMLevel1.Width div 2;
y0 := MMLevel1.Height div 2;
q := SpinEdit1.Value / 180 * 3.1415926;

XF.eM11 := cos(q);
XF.eM12 := sin(q);
XF.eM21 := -sin(q);
XF.eM22 := cos(q);
XF.eDx := x0 - cos(q) * x0 + sin(q) * y0;
XF.eDy := y0 - cos(q) * y0 - sin(q) * x0;

With MMLevel1.Canvas do
begin
SetGraphicsMode(Handle, GM_ADVANCED);
SetWorldTransform(Handle, XF);
// Rectangle(x0 - 20, y0 - 10, x0 + 20, y0 + 10);
// habe ich nicht aufgerufen (bringt natürlich auch nichts)
end;

end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
MMLevel1.Repaint;
PaintBox1.Repaint;
end;
Angehängte Dateien
Dateityp: zip project1_167.zip (128,2 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Graphic Control um 90 grad drehen

  Alt 8. Nov 2007, 13:13
Zitat von PAS_pro:
Vielen Dank Deep-Sea
für den demo source code, aber leider bringt er nicht den gewünschten Effekt.
Es dreht sich nur der Inhalt der Komponente aber nicht die gesamte Komponente.
Bei einem TGraphicControl sollte dies doch keinen großen unterschied machen, oder was genau hast du vor?
(PS: Wenn schon eine Exe, dann bitte ohne RTL )
Chris
  Mit Zitat antworten Zitat
PAS_pro

Registriert seit: 6. Nov 2007
4 Beiträge
 
#8

Re: Graphic Control um 90 grad drehen

  Alt 8. Nov 2007, 13:25
ich will das sich die ganze komponente dreht, genauso wie die PaintBox1.
was mache ich den falsch
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Graphic Control um 90 grad drehen

  Alt 8. Nov 2007, 13:27
Zitat von PAS_pro:
ich will das sich die ganze komponente dreht, genauso wie die PaintBox1.
was mache ich den falsch
Ya was passiert denn?
Häng das Projekt noch mal ohne RTL an (oder als Source) ...
Chris
  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 18: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