Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sinus scroller (https://www.delphipraxis.net/90128-sinus-scroller.html)

michdan 12. Apr 2007 08:35


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

Klaus01 12. Apr 2007 20:26

Re: Sinus scroller
 
Sollte das nicht ungefähr so gehen?

Delphi-Quellcode:
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;
Grüße
Klaus

himitsu 13. Apr 2007 07:20

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.

mkinzler 13. Apr 2007 07:25

Re: Sinus scroller
 
Alternativ könnte man den Text auch in eine Image schreiben und dieses dann vertikal verschieben.

michdan 13. Apr 2007 10:11

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....

Sinus scroller


gruss
michael

turboPASCAL 13. Apr 2007 10:17

Re: Sinus scroller
 
Die Textausgabe ist recht einfach:
Delphi-Quellcode:
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.
... muss man halt noch animieren....

michdan 15. Apr 2007 09:25

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