AGB  ·  Datenschutz  ·  Impressum  







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

Epizykloide programm

Ein Thema von Langa · begonnen am 11. Apr 2006 · letzter Beitrag vom 20. Apr 2006
Antwort Antwort
Seite 2 von 2     12   
Langa

Registriert seit: 10. Apr 2006
Ort: Dresden
24 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: Epizykloide programm

  Alt 16. Apr 2006, 20:52
Hm sind die formeln die du mir gegeben hast für den punkt auf dem außenkreis der die kurve malt oder für den mittel punkt des äußeren kreises???
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#12

Re: Epizykloide programm

  Alt 16. Apr 2006, 21:30
Das ist der Punkt auf dem Kreis, also schon fertig. Aber vielleicht versuchst du trotzdem mal, die Formel selbst herzuleiten .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Langa

Registriert seit: 10. Apr 2006
Ort: Dresden
24 Beiträge
 
Delphi 6 Enterprise
 
#13

Re: Epizykloide programm

  Alt 17. Apr 2006, 13:00
so hab alles her geLitten. geht auch alles ganz gut
was mich jetzt aber noch stört ist das der mir beim start nich gleich anzeigt sondern erst wenn man reset oder start drückt kann da mir mal jemand sagen wie man das hin bekommt
Delphi-Quellcode:
procedure TForm1.Formcreate(Sender: TObject);

begin
        x0:=148;
        y0:=128;
   form1.button2.Visible:=true;
   form1.Button4.Visible:=false;
   timer1.Enabled:=false;
   doublebuffered := true; // anzeigen der erzeugten bitmaps

   w:= paintbox1.width ;
   h:= paintbox1.height ;
   paintbox1.canvas.brush.color:=clwhite;
   bitmap1 := Tbitmap.Create;
   bitmap2 := Tbitmap.Create;

   bitmap1.PixelFormat := pf8bit;
   bitmap1.Width := w;
   bitmap1.height := h;
   bitmap1.TransparentColor := clBtnFace;

   bitmap2.PixelFormat := pf8bit;
   bitmap2.Width := w ;
   bitmap2.height := h ;

with bitmap1.Canvas do begin
      ellipse(x0-r1,y0-r1,x0+r1,y0+r1); //zentraler Kreis
      ellipse(x0+r1,y0+r2,x0+r1+2*r2,y0-r2); //außen Kreis
      pen.Color:=clred;
      ellipse(x0+r1+2,y0+2,x0+r1-2,y0-2);
      pen.Color:=clblack;
      end;
    paintbox1.Canvas.Draw(0,0,bitmap1);


end;
falls der ausschnitt nich reicht oben ist ja der gesammte angehängt

hoffe ihr könnt mir helfen

achso hab gleich noch ein problem

wenn ich stop drücke und dann wieder ohne was zu machen wieder start mache soll der mir ander stelle weiter malen das macht er aber die alte bahn soll auch erhalten werden und das wird immer gelöscht
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
winkel:=winkel+1; // pro schritt erhöhung des winkels

  winkelrad:=winkel/180*pi;
  xn:=x0+round((r1+r2)*cos(winkelrad)-r2*cos((r1+r2)*winkelrad/r2));
  yn:=y0+round((r1+r2)*sin(winkelrad)-r2*sin((r1+r2)*winkelrad/r2));
  xk:=x0+round((r1+r2)*cos(winkelrad));
  yk:=y0+round((r1+r2)*sin(winkelrad));
  with bitmap1.Canvas do begin
      brush.Color:=clwhite;
      pen.Color:=clwhite;
      rectangle(0,0,w,h);
      pen.Color:=clblack;
      ellipse(x0-r1,y0-r1,x0+r1,y0+r1);
      ellipse(xk-r2,yk-r2,xk+r2,yk+r2);
      pen.Color:=clred;
      ellipse(xn+2,yn+2,xn-2,yn-2);
      pen.Color:=clblack;
   end;
  bitmap2.Canvas.Pixels[xn,yn]:=clblack;
  paintbox1.Canvas.Draw(0,0,bitmap2);
  paintbox1.Canvas.Draw(0,0,bitmap1);
  paintbox1.Canvas.CopyMode:=cmSrcAnd;
  paintbox1.Canvas.CopyRect(rect(0,0,w,h) ,bitmap2.Canvas, rect(0,0,w,h));
  paintbox1.Canvas.CopyMode:=cmSrcCopy ;

end;



procedure TForm1.Button4Click(Sender: TObject); //Stop knopf
begin
form1.button2.Visible:=true;
form1.Button4.Visible:=false;
timer1.Enabled:=false;
end;
  Mit Zitat antworten Zitat
Langa

Registriert seit: 10. Apr 2006
Ort: Dresden
24 Beiträge
 
Delphi 6 Enterprise
 
#14

Re: Epizykloide programm

  Alt 19. Apr 2006, 22:29
SO jetzt funzt fast alles

aber hab mal ne frage hab das ja mit ner paintbox und 2 bitmaps gemacht

damit mir die bitmaps gleich beim start angezeigt werden hab ich das mit dem eventmanager gemacht

und bei onpaint paintbox1click ein gestellt das klappt auch
aber wenn ich fenster klein mache oder ein anderes fenster drüber mache und dann wieder das prog an mache macht der die bitmaps wieder neu und malt nich einfach weiter und also geht die bahn verloren geht das auch anders??? so das auch mal klein gemacht werden kann oder ist das nich möglich???
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#15

Re: Epizykloide programm

  Alt 19. Apr 2006, 22:35
Hi!

Vielleicht lässt sich das ganze durch Form1.Doublebuffered:=True; lösen (wenn Form1 das entsprechende Formular ist )

Ansonsten auf ein Bitmap im Speicher zeichnen und das dann onPaint erst anzeigen.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Langa

Registriert seit: 10. Apr 2006
Ort: Dresden
24 Beiträge
 
Delphi 6 Enterprise
 
#16

Re: Epizykloide programm

  Alt 19. Apr 2006, 22:47
also Form1.Doublebuffered:=True; geht nich oder sag mal so es hat nix bewirkt
hm hab auch die procedure formfestroy drin
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
   bitmap1.Free;
   bitmap2.Free;
end;
wurde mir empfohlen obwohl ich nich weiß was das bewirken soll

kann es sein das es deswegen nich geht???
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Epizykloide programm

  Alt 19. Apr 2006, 22:55
Hallo Langa,

schaue Dir mal Delphi-Referenz durchsuchenTPaintBox.OnPaint in der Online-Hilfe an. Ganz besonders das Beispiel 2...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#18

Re: Epizykloide programm

  Alt 19. Apr 2006, 22:59
hi!

Zitat von Langa:
hm hab auch die procedure formfestroy drin
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
   bitmap1.Free;
   bitmap2.Free;
end;
wurde mir empfohlen obwohl ich nich weiß was das bewirken soll

kann es sein das es deswegen nich geht???
Nein, damit hat es nichts zu tun.
Anscheinend benutzt du intern schon die von mir angesprochenen Bitmaps und die werden hier (beim Beenden des Programms) sauber freigegeben.
Allerdings frage ich mich, ob das nicht im FormClose besser aufgehoben wäre....


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Langa

Registriert seit: 10. Apr 2006
Ort: Dresden
24 Beiträge
 
Delphi 6 Enterprise
 
#19

Re: Epizykloide programm

  Alt 19. Apr 2006, 23:11
Hm gut also daran leigt es schon mal nicht aber trotzdem versteh ich das nich mit dem paintbox.onpaint steig da nich durch bei mir verschwindet was immer noch wie kann ich das speichern so das es nicht weg ist???
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Epizykloide programm

  Alt 20. Apr 2006, 08:10
Zitat von Langa:
Hm gut also daran leigt es schon mal nicht aber trotzdem versteh ich das nich mit dem paintbox.onpaint steig da nich durch bei mir verschwindet was immer noch wie kann ich das speichern so das es nicht weg ist???
(a) bei dem Deutsch fällt mir das "Durchsteigen" auch sehr schwer
(b) in OnPaint der PaintBox musst Du das richtige Bitmap ausgeben
also
Delphi-Quellcode:
procedure TForm.PaintBox1Paint (Sender: TObject);
begin
  PaintBox.Canvas.Draw (0,0,Bitmap);
end;
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:24 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