![]() |
Sinus scroller
hallo
Weiss jemand wie man einen 'Sinus scroller' also einen lauftext der sich nach einer sinus kurve bewegt machen kann. Ich benutze Delphi 7 pro. gruss michael |
Re: Sinus scroller
Sollte das nicht ungefähr so gehen?
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var x: Integer; begin for x := 0 to 720 do begin Canvas.TextOut(x,200+trunc(100*sin(x/50)),'+'); application.ProcessMessages; sleep(5); end; end; Klaus |
Re: Sinus scroller
er meint wohl eher sowas, wo der Test sinusförmig angeordnet ist.
bei deinem code würde der text dennoch geradlinig sein und sich nur hoch- und runterbewegen @michdan: schau mal bei Torry rein. jedenfalls sollte es dafür bestimmt schon irgendwo eine fertige Komponente finden lassen. |
Re: Sinus scroller
Alternativ könnte man den Text auch in eine Image schreiben und dieses dann vertikal verschieben.
|
Re: Sinus scroller
hallo
Klaus01: Ich wollte nicht eine kurve zeichnen, sondern einen text der sich nach einen sinus kurve bewegt machen. Es soll also einen lauftext sein der sich von recht nach links nach einer sinus kurve bewegt... Ich habe folgende link gefunden wo man mit openGl so einen scroller macht.... ![]() gruss michael |
Re: Sinus scroller
Die Textausgabe ist recht einfach:
Delphi-Quellcode:
... muss man halt noch animieren....
type
TForm1 = class(TForm) PaintBox1: TPaintBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure PaintBox1Paint(Sender: TObject); private { Private-Deklarationen } bmp: tbitmap; sinArray: array of integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} uses math; var SinTxt : String = 'Willkommen in der freundlichen Community rund um Borlands/CodeGears'+ ' Entwicklertool "Delphi". Unser Ziel ist es, eine Diskussionsplattf'+ 'orm für den Gedankenaustausch zwischen Menschen zu schaffen, die si'+ 'ch beruflich oder privat mit Delphi befassen...'; procedure TForm1.FormCreate(Sender: TObject); var i, n,p: integer; begin bmp := tbitmap.Create; bmp.Width := paintbox1.Width; bmp.Height := paintbox1.Height; bmp.PixelFormat := pf24bit; bmp.Canvas.Font.Assign(paintbox1.Font); SetLength(sinArray, bmp.Width + 1); for i := 0 to bmp.Width do sinArray[i] := round(sin((i/(pi*10))) * (bmp.Height/ 4) ); for i := 0 to bmp.Width do bmp.Canvas.Pixels[i, bmp.Height div 2 + sinArray[i]] := clSilver; bmp.Canvas.Brush.Style := bsClear; p := bmp.Canvas.TextHeight('X^_') div 2; n := 0; for i := 0 to length(sinTxt)-1 do begin if i+n < bmp.Width then begin bmp.Canvas.TextOut( i+n, bmp.Height div 2 + sinArray[i+n] - p, SinTxt[i+1] ); end; inc(n, bmp.Canvas.TextWidth('X')); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin sinArray := nil; freeandnil(bmp); end; procedure TForm1.PaintBox1Paint(Sender: TObject); begin paintbox1.Canvas.Draw(0,0, bmp); end; end. |
Re: Sinus scroller
Matti
danke für den code, das werde ich mal ausprobieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz