![]() |
'Hübsche' Teechart-Komponente
Hallo!
Ich bin auf der Suche nach einer optisch ansprechenden TeeChart-Komponente. Die Komponente soll ein einfaches Kreisdiagramm ähnlich der Speicherkapazität-Anzeige des Windows-Systems anzeigen können. Delphi liefert hier ja eine Komponente mit - nur sieht die schlicht potthässlich aus (Was bringt ein Userinterface mit dem neuesten Look and Feel wenn Teile davon im Win3.11 Look daherkommen). Da die Komponente nur simple Werte darstellen soll, sind die meisten kommerziellen Lösungen zu umfangreich und blähen das Programm nur sehr auf. Kennt jemand eine ressourcenschonende und optisch Ansprechende TeeChart-Komponente (Sowas wie in den aktuellen Acronis-Produkten wär nicht schlecht :-D )? MfG Gerald |
Re: 'Hübsche' Teechart-Komponente
Schreib doch selber? Ist nicht wirklich schwer. Hatte mal sowas in nem Programm von mir gemacht.
Delphi-Quellcode:
procedure DrawPie(image: TImage;values:array of integer; thecolors: array of TColor;height: integer);
var p1, p2: TPoint; angle: array[0..3] of extended; offset, i, max: integer; begin offset := (height) div 2+1; Image.Canvas.Brush.Color := $005A5656; Image.Canvas.FillRect(Image.Canvas.ClipRect); Image.Canvas.Arc(0,height,image.width, image.height-offset*2 + height, 0,image.height div 2-offset+height, image.width,image.height div 2-offset+height); max := 0; for i := 0 to 2 do inc(max,values[i]); if max > 0 then begin angle[0] := 0; angle[1] := 3.6 * (100 / max * values[0]); angle[2] := 3.6 * (100 / max * values[1]) + angle[1]; angle[3] := 3.6 * (100 / max * values[2]) + angle[2]; for i := 0 to 2 do begin if angle[i] <> angle[i+1] then begin p2.x :=trunc(cos(pi/180 * angle[i]) * (image.Width div 2) + image.Width div 2); p2.Y :=trunc(sin(pi/180 * angle[i]) * (image.Height div 2 -offset) + (image.Height div 2-offset)); p1.X :=trunc(cos(pi/180 * angle[i+1]) * (image.Width div 2) + image.Width div 2); p1.Y :=trunc(sin(pi/180 * angle[i+1]) * (image.Height div 2-offset) + (image.Height div 2-offset)); Image.canvas.brush.Color := thecolors[i]; Image.Canvas.Pie(0,0, Image.Width, Image.Height-offset*2, p1.x,p1.y,p2.x,p2.y); end; end; end else Image.Canvas.Ellipse(0,0, Image.Width, Image.Height-offset*2); Image.Canvas.Brush.Color := clWhite; Image.Canvas.FloodFill(0,0,clBlack,fsBorder); Image.Canvas.FloodFill(Image.Width-1,0,clBlack,fsBorder); Image.Canvas.FloodFill(0,Image.Height-1,clBlack,fsBorder); Image.Canvas.FloodFill(Image.Width-1,Image.Height-1,clBlack,fsBorder); end; |
Re: 'Hübsche' Teechart-Komponente
Das funktioniert aber nicht wirklich einwandfrei.
Bei mir wird nur ein weißer Kasten mit einer schwarzen linie gezeichnet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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 by Thomas Breitkreuz