![]() |
AW: Farbe zur Laufzeit verändern?
Ich komme leider nicht voran..
Ich habe einen Code geschreiben, wenn auf das Panel klike(grau) dann wird es einfach blau! Aber das ist nicht was ich machen soll. Es muss genau aussehen wie im Anhang (Farbverlauf)! Ich wäre echt sehr dankbar wenn mir jemand helfen kann..-) |
AW: Farbe zur Laufzeit verändern?
Zitat:
Zeig ihn uns! Trau dich! |
AW: Farbe zur Laufzeit verändern?
Delphi-Quellcode:
Wenn man drauf klickt dann wird das Panel einfach blau..
unit Panel;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ImgList; type TForm1 = class(TForm) Panel1: TPanel; procedure Panel1Click(Sender: TObject); private { Private-Deklarationen } public //procedure FormCreate(Sender: TObject); { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Panel1Click(Sender: TObject); const bgcolor = $00FF0000; //$00FFDDEE; linecolor = $00FFFFFF; //$00554366; var img: array of TImage; reg: hrgn; i: Integer; begin for i := 0 to ComponentCount - 1 do begin if Components[i].ClassName = 'TPanel' then begin setlength(img, Length(img) + 1); img[i] := TImage.Create(Self); img[i].Width := (Components[i] as TPanel).Width; img[i].Height := (Components[i] as TPanel).Height; img[i].Parent := (Components[i] as TPanel); img[i].Canvas.Brush.Color :=bgcolor; img[i].Canvas.pen.Color := bgcolor; img[i].Canvas.Rectangle(0,0,img[i].Width, img[i].Height); img[i].Canvas.pen.Color :=linecolor; img[i].Canvas.RoundRect(5,5,img[i].Width - 5,img[i].Height - 5,20,20); reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width, (Components[i] as TPanel).Height, 20,20); setwindowrgn((Components[i] as TPanel).Handle, reg, True); deleteobject(reg); end; end; end; end. Ich möchte es genau programmieren wie im Anhang -( ?? |
AW: Farbe zur Laufzeit verändern?
Zitat:
. |
AW: Farbe zur Laufzeit verändern?
Liste der Anhänge anzeigen (Anzahl: 1)
Diese Buttons sind mit 2 simplen Bildern gemacht worden auf die dann (zur Laufzeit) das Icon und der Text (weiß oder schwarz) gepinselt wurden.
Um die Breiten anpassen zu können und/oder zum Animieren, werden bestimmte Bereiche der Bilder wiederholt (sieht man sehr schön durch die Artefakte im blauen Bereich bei einer entsprechenden Vergrößerung) Anhang 41295 |
AW: Farbe zur Laufzeit verändern?
Hey!
Danke für die Antwort.. das ist nur ein Button(Bild links)!! Erst wenn man drauf klickt wird es wie aufm rechten Bild.. Und wie kann ich das machen, Wie aufm Bild? . |
AW: Farbe zur Laufzeit verändern?
Ich hab's versucht.. ist aber leider nicht was ich will..
Delphi-Quellcode:
unit Panel;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ImgList; type TPanel = class(Vcl.ExtCtrls.TPanel) private { Private-Deklarationen } FOnPaint: TNotifyEvent; protected { Protected-Deklarationen } procedure Paint; override; public { Public-Deklarationen } property Canvas; published { Published-Deklarationen } property OnPaint: TNotifyEvent read FOnPaint write FOnPaint; end; type TForm1 = class(TForm) Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure Panel1Click(Sender: TObject); private { Private-Deklarationen } procedure OnPanel1Paint(Sender: TOBject); public //procedure FormCreate(Sender: TObject); { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Panel1Click(Sender: TObject); const bgcolor = $00FF0000; //$00FFDDEE; linecolor = $00FFFFFF; //$00554366; var img: array of TImage; reg: hrgn; i: Integer; begin for i := 0 to ComponentCount - 1 do begin if Components[i].ClassName = 'TPanel' then begin setlength(img, Length(img) + 1); img[i] := TImage.Create(Self); img[i].Width := (Components[i] as TPanel).Width; img[i].Height := (Components[i] as TPanel).Height; img[i].Parent := (Components[i] as TPanel); img[i].Canvas.Brush.Color :=bgcolor; img[i].Canvas.pen.Color := bgcolor; img[i].Canvas.Rectangle(5,5,img[i].Width, img[i].Height); img[i].Canvas.pen.Color :=linecolor; img[i].Canvas.RoundRect(0,0,img[i].Width - 50,img[i].Height - 5,20,20); reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width, (Components[i] as TPanel).Height, 0,0); setwindowrgn((Components[i] as TPanel).Handle, reg, True); deleteobject(reg); end; end; end; procedure TPanel.Paint; begin inherited; if assigned(fOnPaint) then fOnPaint(Self); end; procedure TForm1.FormCreate(Sender: TObject); begin Panel1.OnPaint := OnPanel1Paint; end; procedure TForm1.OnPanel1Paint(Sender: TOBject); var r: Trect; begin r := Panel1.ClientRect; InflateRect(r, -2, -2); With Panel1 do begin Canvas.Brush.Color :=$CD0000;//clWindow; Canvas.RoundRect(r.Left, r.Top, r.Right, r.Bottom, 20, 20); Canvas.Brush.Color := Panel1.Color; Canvas.Draw(5, 5, Application.Icon); Canvas.Brush.Color := $FFFFE0; Canvas.RoundRect(r.Left, r.Top, r.Right-120, r.Bottom, 30, 30); Canvas.Brush.Color:=Panel1.Color; Canvas.Draw(5, 5, Application.Icon); end; end; end. |
AW: Farbe zur Laufzeit verändern?
Wo hakt es denn noch? Und muss es unbedingt ein Panel sein?
|
AW: Farbe zur Laufzeit verändern?
Zitat:
Nimm 2 Bilder und zeige eins davon an. Sobald die Maustaste sich nach unten bewegt zeige das andere Bild an und wenn die Maustaste losgelassen wird, dann zeige wieder das erste Bild an. Einfach gell? |
AW: Farbe zur Laufzeit verändern?
Oder man erstellt nur eine Grafik und "schiebt die rein", damit das auch animiert aussieht. Erstmal dürfte dafür ein einfacher Timer genügen, ein Multimedia-Timer wäre allerdings hübscher.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 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