Rysowanie po komponentach...

0

Witam

Mam problem z rysowaniem po komponentach i prosze o pomoc.
Rysuje po ToolBar zczytujac kolory z bitmapy, ale jest to strasznie wolne. Efekt jest widoczny i denerwujacy. Czy jest jakis szybszy i wygodniejszy sposob, aby graficznie ozdabiac komponenty?

procedure TForm1.ToolBar1AdvancedCustomDraw(Sender: TToolBar;
  const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
  Obrazek: TBitMap;
  i, j: SmallInt;
begin
  Obrazek:=TBitMap.Create;
  Obrazek.LoadFromFile('E:\ToolBarTlo.bmp');
  for i := 0 to ARect.Right do
  for j := 0 to ARect.Bottom do
    Sender.Canvas.Pixels[i, j] := Obrazek.Canvas.Pixels[0, j];
  Obrazek.Free;
end;

<ort>w ogóle</ort> jak tak pokoloruje ToolBar-a to przyciskow nie widac i przy najezdzaniu na nie dziwnie migaja.
Mam tez problem z ToolButton? Chcialbym go pokolorawac inaczej przy najechaniu myszka i przy kliknieciu...

Pozdrawiam...

0

Może zamiast przerysowywać piksel po pikselu wyświetlić bitmapkę używając metod Draw() lub StretchDraw() obiektu klasy TCanvas? I na pewno lepiej wstawić try po TBitmap.Create(), a wywołanie Obrazek.Free() umieścić w bloku finally.

0

Dzięki..

StrechDraw działa dokładnie tak jak chciałem.. Super..

Ale mam jeszcze inny problem.
W ToolButton-ach nie ma klasy Canvas i nie wiem jak po nich rysować..
Np. po najechaniu myszką lub kliknięciu...

0

Znam tylko jeden sposób, ale nie jest on dość dobry:

procedure TForm1.Button1Click(Sender: TObject);
var c:TCanvas;
begin
  C:=TCanvas.Create;
  c.Handle:=GetDC(Button2.Handle);
  c.Brush.Style:=bsClear;
  c.TextOut(0,0,'Napis na buttonie');
  c.Free;
end;
0

Ale ToolButton nie ma uchwytu.
Nie chodzi mi tylko o tekst, ale też o rysowanie tła dla niego.

Nie mogę także zmienić koloru czcionki. Zmieniam Font na kolor biały, a Caption-y ToolButton-ów są nadal koloru czarnego. Czy ktoś wie dlaczego ??

Pzdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1