Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Suche (gute) Diagramm-Komponennte (https://www.delphipraxis.net/13667-suche-gute-diagramm-komponennte.html)

MrKnogge 23. Dez 2003 15:06


Suche (gute) Diagramm-Komponennte
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi

Ich suche ne gute Diagramm-Komponennte die AlphaBlending unterstützt (siehe Screenshot).

sakura 23. Dez 2003 15:07

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:...

phlux 23. Dez 2003 15:45

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:

Mikko 23. Dez 2003 16:38

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.

MrKnogge 23. Dez 2003 18:09

Re: Suche (gute) Diagramm-Komponennte
 
gibts dein DU-Meter_Clone OpenSource ?

Mikko 23. Dez 2003 18:16

Re: Suche (gute) Diagramm-Komponennte
 
Zitat:

Zitat von MrKnogge
gibts dein DU-Meter_Clone OpenSource ?

Noch nicht, da ich noch dran arbeite (sollen noch ein paar Funktionen rein und hat noch ein paar kleine Bugs). Aber wenn du den Quelltext vom Diagramm willst, kann ich dir den zusammenstellen.

MrKnogge 23. Dez 2003 18:23

Re: Suche (gute) Diagramm-Komponennte
 
wäre nett

MrKnogge 23. Dez 2003 18:30

Re: Suche (gute) Diagramm-Komponennte
 
@Sakura
Ab der Proffessional-Version gibts doch ne Diagramm-Komponennte
funktioniert das nicht eventuell mit dieser ?

sakura 23. Dez 2003 18:34

Re: Suche (gute) Diagramm-Komponennte
 
Zitat:

Zitat von MrKnogge
Ab der Proffessional-Version gibts doch ne Diagramm-Komponennte
funktioniert das nicht eventuell mit dieser ?

Nee, die kann nur auf sichtbaren Formularen genutzt werden, aber nicht im Hintergrund auf Bitmap projezieren :wall:

...:cat:...

Mikko 23. Dez 2003 19:22

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:
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;
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.

Delphi-Quellcode:
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;
Gespeist wird diese Prozedure von folgendem Code, der bei mir jetzt in einer anderem Form steht und von einem Timer aufgerufen wird:

Delphi-Quellcode:
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
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).


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 03:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz