![]() |
Suche (gute) Diagramm-Komponennte
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Ich suche ne gute Diagramm-Komponennte die AlphaBlending unterstützt (siehe Screenshot). |
Re: Suche (gute) Diagramm-Komponennte
Ich auch :!: Für mich sollte diese auch ohne sichtbares Fenster laufen. Bin gerne bereit dafür zu löhnen ;-)
...:cat:... |
Re: Suche (gute) Diagramm-Komponennte
hmm ich hab mir mal so nen pseudo diagram mopped zusammengepuzzled (sieht so aus wie das diagrammopped im taskmanager) falls ihr mal gucken wollt sagt bescheid dann lad ich das hoch. aba vorsicht ist gruselig gecodet ;) :duck:
|
Re: Suche (gute) Diagramm-Komponennte
Liste der Anhänge anzeigen (Anzahl: 1)
So'n Diagramm wie das vom DU-Meter kannst du dir auch selbst coden. Du nimmst dir z.B. 'ne normale Image-Komponente und malst dir die Linien drauf, wie du willst. So hast du sogar den Vorteil, daß du das Diagramm so aussehen lassen kannst, wie du es willst.
Ein bißchen Fantasie, bitte. Wenn man bei jedem Ding 'ne separate Kompo braucht, was ist dann im Prog letztendlich noch von einem selbst? :roll: Mein DU-Meter-Clone sieht so wie auf dem Bild aus, unterstützt AlphaBlend, und läuft natürlich im Hintergrund stets weiter. Das Striche im Diagramm zu coden sind vielleicht ca. 50 Codezeilen. |
Re: Suche (gute) Diagramm-Komponennte
gibts dein DU-Meter_Clone OpenSource ?
|
Re: Suche (gute) Diagramm-Komponennte
Zitat:
|
Re: Suche (gute) Diagramm-Komponennte
wäre nett
|
Re: Suche (gute) Diagramm-Komponennte
@Sakura
Ab der Proffessional-Version gibts doch ne Diagramm-Komponennte funktioniert das nicht eventuell mit dieser ? |
Re: Suche (gute) Diagramm-Komponennte
Zitat:
...:cat:... |
Re: Suche (gute) Diagramm-Komponennte
@MrKnogge
Du setzt eine Image-Kompo auf eine Form. Das AlphaBlend stellst du über dein Form ein. Damit ist dein Diagramm somit auch "durchsichtig". Die Prozedur für den Rahmen sieht so aus:
Delphi-Quellcode:
Das ist die Prozedur, um das Diagramm zu zeichnen. Diese Prozedur zeichnet je 2Linien für Up- und Download. Eine Linie in der Farbe des Graphen und die zweite, die an der ersten Linie anschließt, in der Farbe des Hintergrunds, um die Linie, die eventuell vorher da war, zu übermalen.
procedure tform4.hintergrund_zeichnen;
var y:integer; begin form4.Image1.Repaint; form4.image1.Canvas.Pen.Color:=clgray; form4.image1.Canvas.Pen.style:=pssolid; form4.image1.Canvas.Brush.Color:=$00EEE0DA; form4.image1.Canvas.Rectangle(0,0,292,100); form4.image1.Canvas.Pen.Color:=clblack; form4.image1.Canvas.Rectangle(44,2,166,80); form4.image1.Canvas.Rectangle(168,2,290,80); form4.image1.Canvas.Font.Name:='Arial'; form4.image1.Canvas.Font.Size:=6; form4.image1.Canvas.Font.Color:=stringtocolor(ini_farbe_dl); form4.image1.Canvas.TextOut(27,80,'DL'); form4.image1.Canvas.Font.Color:=stringtocolor(ini_farbe_ul); form4.image1.Canvas.TextOut(27,88,'UL'); if ini_label_raster=true then begin //Minutenraster form4.image1.Canvas.Pen.Color:=clgray; form4.image1.Canvas.Pen.style:=psDot; form4.image1.Canvas.Pen.Color:=clgray; form4.image1.Canvas.MoveTo(44+60,78); form4.image1.canvas.LineTo(44+60,2); form4.image1.Canvas.MoveTo(168+60,78); form4.image1.canvas.LineTo(168+60,2); end; if ini_label_100=true then begin //100%-Linie form4.image1.Canvas.Pen.Color:=clgray; form4.image1.Canvas.Pen.style:=psDot; form4.image1.Canvas.Pen.Color:=clgray; y:=strtoint(floattostr(roundto(76/((form4.ini_zusatz)/100),0))); y:=76-y; form4.image1.Canvas.MoveTo(44+2,y); form4.image1.canvas.LineTo(44+120,y); form4.image1.Canvas.MoveTo(168+2,y); form4.image1.canvas.LineTo(168+120,y); end; //Anzeige, ob Timer aktiv if (form4.Showing=true) and ((form1.gllabel1.Visible=true) or (form1.gllabel2.Visible=true)) then begin shape1.Visible:=true; label3.Visible:=true; end else begin shape1.Visible:=false; label3.Visible:=false; end; end;
Delphi-Quellcode:
Gespeist wird diese Prozedure von folgendem Code, der bei mir jetzt in einer anderem Form steht und von einem Timer aufgerufen wird:
procedure TForm4.graph_zeichnen(d1, s1:extended; stelle:byte; speed:integer);
var linie:extended; begin if form4.Showing=true then begin //Download form4.image1.Canvas.Pen.style:=pssolid; form4.image1.Canvas.Pen.Color:=stringtocolor(ini_farbe_dl); form4.image1.Canvas.Pen.Width:=1; form4.image1.Canvas.MoveTo(44+stelle,78); if speed>0 then linie:=d1*75/((speed)/(1024*8)) else linie:=0; linie:=roundto(linie*1/((ini_zusatz)/100),0); //variabler Zuschlag if linie>76 then linie:=76; form4.image1.canvas.LineTo(44+stelle,78-(linie)); //Upload form4.image1.Canvas.Pen.Color:=stringtocolor(ini_farbe_ul); form4.image1.Canvas.MoveTo(168+stelle,78); if speed>0 then linie:=s1*75/((speed)/(1024*8)) else linie:=0; linie:=roundto(linie*1/((ini_zusatz)/100),0); //variabler Zuschlag if linie>76 then linie:=76; form4.image1.canvas.LineTo(168+stelle,78-(linie)); end; end;
Delphi-Quellcode:
Zuerst werden die ankommenden Daten in ein Array gelesen. Danach wrd das Array um eine Stelle verrückt (>Vorrücken des Graphen). Dann wird die Prozedure graphzeichnen für jedes Element aufgerufen. Als letztes habe ich jetzt noch eine Stringbearbeitung drin, die hier aber nicht interessiert (es sollen auf alle Fälle immer 2 Nachkommastellen stehen).
i:=120;
repeat r[i]:=r[i-1]; s[i]:=s[i-1]; geschw[i]:=geschw[i-1]; dec(i); until i=0; r[1]:=roundto(((down)/1024),-2); s[1]:=roundto(((up)/1024),-2); geschw[1]:=speed; if (form4.Showing=true) then begin form4.hintergrund_zeichnen; for i:=1 to 120 do form4.graph_zeichnen(r[i],s[i],i,geschw[i]); //Graph zeichnen So, das ist der ganze Code. Den mußt du nur auch deine Bedürfnisse umbiegen. Zur Info: Der DU-Meter-Clone ist noch in Bearbeitung. Daher keine Gewähr für Fehler, besonders schönen Code etc. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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