Avatar billede r.hegaard Nybegynder
13. januar 2003 - 21:22 Der er 9 kommentarer og
1 løsning

Rotere label ligesom i lykkehjulet

Er der nogle der ved hvor man kan downloade en label komponent til Delphi, der kan rotere ligesom bogstaverne i lykkehjulet ??
Avatar billede hreiff Nybegynder
14. januar 2003 - 07:15 #1
http://www.delphipages.com/result.cfm?ID=1395  (TantAngleLabel - Freeware)
Avatar billede r.hegaard Nybegynder
14. januar 2003 - 08:26 #2
hreiff > Hvordan får jeg den til at rotere ligesom i lykkehjulet ????
Avatar billede hreiff Nybegynder
14. januar 2003 - 08:40 #3
Den kan da rotere - kan den ikke ?
Aahh, du vil have den til at rotere 'ind i skærmen'. Sådan en component har jeg desværre aldrig set. Sorry.
Avatar billede r.hegaard Nybegynder
14. januar 2003 - 08:41 #4
ok, det var trals....
Avatar billede cozey Nybegynder
14. januar 2003 - 08:42 #5
Skal det ikke laves med en form for eksempelvis Flash?
Avatar billede r.hegaard Nybegynder
14. januar 2003 - 08:45 #6
cozey > Det tror jeg ikke, det skal virke i delphi..... Gør Flash det ??
Avatar billede lemvigh Nybegynder
15. januar 2003 - 13:33 #7
Du kan evt. snyde lidt. Hold centrum på din label fast, mens du gøre bredden mindre. Så skal du bare vælge baggrundsfarve på label og panel så man kan se det. Der mangler selvølgelig lidt vinkler, der ikke bliver kompenseret for. Men hvis rotationen skal går vel så relativt hurtig, at det når man ikke at se. Alt efter hvor gennemført dit lykkehjul skal være....
Avatar billede hreiff Nybegynder
15. januar 2003 - 16:38 #8
Her er noget. Det duer, men du må selv rette det til så det ser godt ud.
Sæt timeren til lille interval, f.eks. 50


var
  BH,BW: integer;
  vinkel: integer;

procedure TForm1.FormCreate(Sender: TObject);
var
  xdel,ydel: integer;
  s: string;
Begin
  s := 'Hej Med Dig';
  Bitmap := TBitmap.Create;
  Bitmap.canvas.font.name := 'Arial';
  Bitmap.canvas.font.size := 24;
  BH := Bitmap.Canvas.TextHeight(s)+6;
  BW := Bitmap.Canvas.TextWidth(s)+10;
  Bitmap.Height := BH;
  Bitmap.Width := BW;
  With Bitmap.Canvas do
  begin
    Brush.Color := ClRed;
    fillrect(Form1.ClientRect); {sletter image}
    Pen.Color := ClBlue;
{    Lineto(100,50);  }
    Font.Color := ClOlive;
    xdel := (Bitmap.width-TextWidth(s)) div 2;
    ydel := (Bitmap.height-TextHeight(s)) div 2;
    TextOut(xdel,ydel,s);
  end;
  Vinkel := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  x,y, h, w: integer;
begin
  Vinkel:=Vinkel+5;

  x := 100;  y := 25;    {placering af label}
  H := BH;
  w := round(cos(vinkel*pi/180)*BW);
  Form1.canvas.brush.color := clRed;
  Form1.canvas.fillrect(rect(  x-BW div 2,y,x+BW div 2,y+h)); {sletter felt}
  Form1.Canvas.StretchDraw(rect(x-w div 2,y,x+w div 2,y+h),Bitmap);
end;
Avatar billede hreiff Nybegynder
15. januar 2003 - 17:29 #9
Så der der rettet lidt til, og med rigtige farver:

Const
  Baggrund = ClBtnFace;
  Forgrund = ClWindowText;
  Fnt = 'Arial';
  Sz = 24;

var
  vinkel: integer;

Procedure CreateBitmap(s:string);
var
  x,y: integer;
Begin
  Bitmap := TBitmap.Create;
  Bitmap.canvas.font.name := Fnt;
  Bitmap.canvas.font.size := Sz;
  Bitmap.Height := Bitmap.Canvas.TextHeight(s)+6;
  Bitmap.Width := Bitmap.Canvas.TextWidth(s)+10;
  Bitmap.Canvas.Brush.Color := Baggrund;
  Bitmap.Canvas.fillrect(Form1.ClientRect); {sletter image}
  Bitmap.Canvas.Font.Color := Forgrund;
  x := round((Bitmap.width-Bitmap.Canvas.TextWidth(s))/2);
  y := round((Bitmap.height-Bitmap.Canvas.TextHeight(s))/2);
  Bitmap.Canvas.TextOut(x,y,s);
  Vinkel := 0;
  Form1.canvas.brush.color := Baggrund;
end;

Procedure PrintLabel(x,y:integer; v: double);
var
  a,b: integer;
begin
  a := round(cos(v*pi/180)*Bitmap.width/2);
  b := round(Bitmap.width/2);
  Form1.canvas.fillrect(rect(x-b,y,x+b,y+bitmap.height)); {sletter felt}
  Form1.Canvas.StretchDraw(rect(x-a,y,x+a,y+bitmap.height),Bitmap);
end;

procedure TForm1.FormCreate(Sender: TObject);
Begin
  CreateBitmap('Hej Med Dig');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PrintLabel(100,25,vinkel);
  Vinkel:=Vinkel+10;
end;                             

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Bitmap.free;
end;
Avatar billede r.hegaard Nybegynder
15. januar 2003 - 17:41 #10
Smart. Tak for hjælpen.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester