Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Canvas auf SpeedButton zeichnen? (https://www.delphipraxis.net/7166-canvas-auf-speedbutton-zeichnen.html)

cYaONE 4. Aug 2003 14:31


Canvas auf SpeedButton zeichnen?
 
Servus,

ist es irgendwie möglich mit Hilfe eines Canvas auf einen SpeedButton zu zeichnen?

Danke schonmal!

negaH 4. Aug 2003 14:45

Re: Canvas auf SpeedButton zeichnen?
 
SpeedButton.Canvas.CopyRect(Rect, Canvas);

FriFra 4. Aug 2003 15:58

Re: Canvas auf SpeedButton zeichnen?
 
Du kannst dir eine temporäre Bitmap erzeugen, darauf herumzeichnen und diese dann dem SpeedButton als Glyph zuordnen.
Delphi-Quellcode:
var
  bmp: TBitmap;
begin
  try
    bmp := TBitmap.Create;

    { Hier kannst Du nun auf dem Bitmap herumzeichnen... }

    SpeedButton1.Glyph.Assign(bmp);
  finally
    bmp.Free;
  end;
end;

cYaONE 5. Aug 2003 14:36

Re: Canvas auf SpeedButton zeichnen?
 
Danke erstmal!
Ein weiteres Problem: Warum funktioniert das hier nicht?

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
  var
  bmp: TBitmap;
begin
  try
    bmp := TBitmap.Create;

    bmp.Canvas.Rectangle(0, 0, 20, 20);
    { Hier kannst Du nun auf dem Bitmap herumzeichnen... }

    SpeedButton1.Glyph.Assign(bmp);
  finally
    bmp.Free;
  end;
end;

negaH 5. Aug 2003 16:51

Re: Canvas auf SpeedButton zeichnen?
 
Welche .Width und .Height hat BMP ?

FriFra 5. Aug 2003 17:19

Re: Canvas auf SpeedButton zeichnen?
 
Zitat:

Zitat von negaH
Welche .Width und .Height hat BMP ?

Du solltest das Bitmap ca. 16x16 Pixel gross machen...

cYaONE 5. Aug 2003 19:21

Re: Canvas auf SpeedButton zeichnen?
 
Is das nötig?

Luckie 5. Aug 2003 20:05

Re: Canvas auf SpeedButton zeichnen?
 
Zitat:

Zitat von FriFra
Du solltest das Bitmap ca. 16x16 Pixel gross machen...

Würde ich so generell nicht sagen. Was ist wenn sein Button 20x46 Pixel groß ist? :roll:

negaH 5. Aug 2003 21:47

Re: Canvas auf SpeedButton zeichnen?
 
Also im obigen Code wird Rectangle(0, 0, 20, 20), das rechteck soll also 20x20 Pixel groß werden .

Nun frage ich dich nochmal wie groß der Canvas der BMP ist ?

Da du das im Source nicht festgelegt hast ist die Bitmap BMP 0 Pixel breit und 0 Pixel hoch. Wie soll darin ein Rechteck mit 20x20 reinpassen. Das nichts angezeigt wird ist also logsich. Änders ab in

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
  var
  bmp: TBitmap;
begin
  try
    bmp := TBitmap.Create;
    bmp.Width := SpeedButton1.Width -2;
    bmp.Height := SpeedButton1.Height -2;
   
    bmp.Canvas.Rectangle(0, 0, 20, 20);
    { Hier kannst Du nun auf dem Bitmap herumzeichnen... }

    SpeedButton1.Glyph.Assign(bmp);
  finally
    bmp.Free;
  end;
end;
-2 für den 1 Pixel breiten Rahmen des Speedbuttons.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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