Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Надпись на кнопке разными цветами


Автор: MacTep 3.6.2005, 07:46
Как сделать так, чтобы на кнопке надпись была написала так, что все ее буквы разным цветом? Спасибо!

Автор: ~FoX~ 3.6.2005, 08:33
TextOut, DrawText и еже с ними

Автор: MacTep 3.6.2005, 08:46
smile можно примерчик?

Автор: s-mike 3.6.2005, 09:18
Вот пример вывода цветного текста. А как его вывести на кнопку- зависит от того, что за компонент ее представляет.
Код

procedure DrawColoredText(const X, Y: Integer; const AText: string;
  Canvas: TCanvas; const Colors: array of TColor);
var
  P, N, LettersPerColor, H, L: Integer;
  S: string;
begin
  LettersPerColor := Length(AText) div Length(Colors);
  H := High(Colors);

  L := X;
  P := 1;
  N := Low(Colors);
  while N <= H do
  begin
    S := Copy(AText, P, LettersPerColor);

    Canvas.Font.Color := Colors[N];
    Canvas.TextOut(L, Y, S);

    Inc(P, LettersPerColor);
    Inc(L, Canvas.TextWidth(S));
    Inc(N);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawColoredText(100, 100, 'Colored text', Canvas, [clRed, clBlue, clYellow, clGreen]);
end;

Автор: Quadr0 3.6.2005, 10:15
...

Автор: MacTep 3.6.2005, 10:57
Цитата(Quadr0 @ 3.6.2005, 10:15)
Воспользуйся компонентами джедаев
А где изх взять?

Цитата(s @ 3.6.2005, 09:18)
зависит от того, что за компонент ее представляет
Компонент простой: либо TButton, либо TBitBtn. smile

Автор: ~FoX~ 3.6.2005, 11:07
MacTep
Они не совсем простые.
В TBitBtn есть свойство Glyph, которое есть TBitmap, соответственно он имеет свойство Canvas ака TCanvas......ты можешь его перехватить и издеваться над нима как хочешь.......
В TButton нету не канваса не глифа......точнее канвас то есть, но надо немножео извращьнуться

Код

var
  c: TCanvas;
begin
  c := TCanvas.Create;
  c.Handle := GetDC(Button1.Handle);
  TextOut(c.Handle, 0,0, 'Sample', 6);
end;

Вроде так.......хотя компилера пока нет, проверить не могу.....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)