Autor Beitrag
killercode
Hält's aus hier
Beiträge: 9

WinXP pro
Delphi 7 personal
BeitragVerfasst: Di 01.03.05 20:35 
Hallo!

Ich versuch schon seit Ewigkeiten eine Figur (zb. Ein Strich oder ein Viereck) auf der Canvas rotieren zu lassen.
Sozusagen ein "bewegtes Bild".
Es soll sich "nur" im Kreis drehen als nix spektakuläres...
aber leider bekomm ich das nicht allein hin... :cry:

Bitte helft mir schnell!!!

Danke...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 01.03.05 21:04 
killercode Threadstarter
Hält's aus hier
Beiträge: 9

WinXP pro
Delphi 7 personal
BeitragVerfasst: Di 01.03.05 22:05 
Ehm...naja...danke trotzdem,

nur leider hätte ich das Problem gern etwas einfacher. ^^
So in ein paar Zeilen Quellcode weil sonst denkt der Lehrer ich habs geklaut und das soller ja nich merken... :-D

Wir solln das in ne anfangs oder engeprüfte Schleife einbinden.

Achja...das Teil geht nich zu kompilieren weil die KOL.dcu fehlt...

no mather...

ciao & thx

hoffe das mir noch jemand helfen kann...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 01.03.05 22:12 
wenn du das so direkt compilen willst musst du noch kol.pas von bonanzas.rinet.ru saugen
die für die rotation zuständigen codezeilen funktionieren jedoch auch in deinem delphi (also rauskopieren und damit rumspielen)
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Di 01.03.05 22:14 
Ist das Drehen das Problem oder die Bewegung?

Punkt (x1,x2) um den Ursprung drehen:
ausblenden Delphi-Quelltext
1:
2:
3:
a := 10*pi/180// um 10° drehen
x1 := cos(a)*x1-sin(a)*x2;
x2 := sin(a)*x1+cos(a)*x2;
killercode Threadstarter
Hält's aus hier
Beiträge: 9

WinXP pro
Delphi 7 personal
BeitragVerfasst: Di 01.03.05 22:34 
Naja ich mag so sachen mit der Paintbox einfach nich. :roll: :lol:
Aber trotzdem danke...bin bei diesem Mathekram was Flächen anbelangt nich so intressiert gewesen.

Mal probiern obs jetzt geht.

ciao&thx

bin trotzdem für andere Lösungsansätze offen! *g

[EDIT]

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button2Click(Sender: TObject);
var i,x1,x2:Integer;
    a:Extended;

begin
  x1:=1;
  x2:=1;
  i:=1;
  pic.canvas.moveto(10,10); //pic heißst meine PaintBox
  Repeat
                    Refresh; //Refresh damit kein Kreis gemalt wird sondern nur die Linie rotiert
                    pic.canvas.lineto(x1,x2); //Diese Linie  sollte sich eigentlich drehn...
                    a := 10*pi/180;
                    x1 := trunc(cos(a)*x1-sin(a)*x2); //hier musste ich  trunc machen weil nur Integer erlaubt is...Alternative???
                    x2 := trunc(sin(a)*x1+cos(a)*x2);
                    i:=i+10//joa un irgendwann soll das auch ma aufhörn zu drehen...naja erstma anfangen sollte es schon :cry:
  Until i=100;
end;


So in etwa sollte es aussehen und funktionieren...das tut mein oben genannter Quellcode aber nicht! :lol:
Ist nur mal n Beispiel damit ihr wisst wie ichs ungefähr gern hätte...
Naja...das einzige was das Proggi bringt: 100% CPU-Auslastung! :-D
Es zeichnet aber überhauptgarnix???? das ist komisch.

PLZ HLP!!!
Bin verzweifelt :cry:
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 09.10.05 16:42 
ausblenden Delphi-Quelltext
1:
Application.ProcessMessages					

Schreibs in deine Schleife. und mach keine repeat until schleife, sondern eine for do.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i:=0 to 10 do
begin
  memo1.lines.add(IntToStr(i);
  application.processMessages;
  sleep(100);
end;

Das schreibt dir alle zehntel sekunde eine zahl ins memo und zwar 1 2 3 4 5 6 7 8 9 10. Ohne processMessages würde er erst alle zahlen reinschreiben, und DANN anzeigen. da ist bei dir wahrscheinlich auch der Fehler...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.