Ręczne rysowanie TLabel

Ręczne rysowanie TLabel
D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 165
0

Chciałbym wyśrodkować tekst zarówno pionowo i poziomo. O ile sama środkowanie działa prawidłowo. To niestety sam napis wydaje się być pogrubiony i rozmazany. Co można z tym zrobić?
Dziekuję

Kopiuj
Label34.Canvas.TextOut(Round((Label34.Width - Label34.Canvas.TextWidth(L34C)) / 2), Round((Label34.Height - Label34.Canvas.TextHeight(L34C)) / 2), L34C);
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Przecież standardowy TLabel to wszystko potrafi, patrz właściwości: Alignment, Layout

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
1

Najpierw zamaluj wybranym kolorem to co już narysowała etykieta domyślnie, a dopiero później coś sam maluj; Czyli najpierw ustaw sobie kolor tła i je zamaluj, a dopiero później namaluj swój tekst:

Kopiuj
with Label1.Canvas do
begin
  Brush.Color := clWhite;
  FillRect(ClientRect);

  Label1.Canvas.TextOut(10, 10, Label1.Caption);
end;

Powyższe kolory i współrzędne są przykładowe, więc podstaw w ich miejsce te odpowiednie;


A jeśli wszystkie etykiety na formularzu mają być w ten sposób malowane, to lepiej będzie nadpisać metodę Paint z klasy TLabel przed deklaracją klasy formularza:

Kopiuj
interface

uses
  Forms, Graphics, StdCtrls;

type
  TLabel = class(StdCtrls.TLabel)
  public
    procedure Paint(); override; // nadpisujemy wirtualną metodę Paint
  end;

type
  TForm1 = class(TForm) // Twoja klasa formularza...
    Label1: TLabel; // ...ze wszystkimi etykietami
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

procedure TLabel.Paint(); // tu określasz nowe malowanie komponentu
begin
  with Self.Canvas do
  begin
    Brush.Color := clWhite;
    FillRect(Self.ClientRect);

    Canvas.TextOut(10, 10, Caption);
  end;
end;

end.

Dzięki temu już nic więcej nie będziesz musiał oprogramowywać, a komponent domyślnie będzie rysowany tak, jak sobie tego życzysz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.