AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Chart mit sauberen Linien

Ein Thema von roga · begonnen am 8. Jan 2011 · letzter Beitrag vom 16. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#1

Chart mit sauberen Linien

  Alt 8. Jan 2011, 20:17
Da TChart auf einem Frame Probleme bereitete, habe ich selbst eine entsprechende Komponente entwickelt, die im Prinzip nur Einnahmen und Ausgaben grafisch darstellen soll und dies auch fehlerfrei tut. Den unsauberen "Treppeneffekt" der gezeichneten Linien konnte ich erfolgreich mit einem Codebeispiel von Karstadt http://www.delphipraxis.net/475750-post3.html beseitigen. Leider wird hier die eingestellte Linienstärke (Pen.Width) nicht berücksichtigt. Vielleicht kann jemand den Code dahingehend anpassen oder entsprechende Hinweise geben.

Vielen Dank
roga
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Chart mit sauberen Linien

  Alt 8. Jan 2011, 20:36
Ich würde Dir GDI+ ans Herz legen..http://www.progdigy.com/
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Chart mit sauberen Linien

  Alt 8. Jan 2011, 22:31
Das hilft mir im Moment nicht weiter - trotzdem Danke für Deine Antwort.

roga
Ronald
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#4

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 00:34
http://homepages.enterprise.net/murp...ine/index.html
Hier habe ich was gefunden.
Und hier in der BresenhamLibrary - Radius könnte PenWidth sein:
http://www.efg2.com/Lab/Library/Delp...ColorLines.ZIP

Diese Art eine Linie zu malen kommt von Herrn Bresenham. Hier die Anleitung dazu:
http://de.wikipedia.org/wiki/Bresenham-Algorithmus
Oder guck mal Google durch.

Übrigens... Karstadt gibt es nicht mehr

Geändert von Jens01 ( 9. Jan 2011 um 01:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 09:17
Zitat:
Das hilft mir im Moment nicht weiter
Würde im Prinzip für Dich nur bedeuten 3 Units in den Projektordner zu kopieren und den jetzigen Aufruf durch eine neues Pendant zu ersetzen (über den Daumen ein 8 Zeiler). Installiert werden muß nichts.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 17:44
Hallo Bummi,

habe mich bisher noch nicht mit GDI+ beschäftigt und momentan fehlt mir auch echt die Zeit dazu. Aber Dein Vorschlag hört sich recht simpel an. Eigentlich hatte ich an eine kleine Anpassung der genannten Routine gedacht, denn prinzipiell brauche ich nur eine einfache grafische Darstellung. Habe mal einen Screen meiner eingesetzten Komponente als Bild angefügt. Diese befindet sich allerdings noch im Entwicklungsstatus. Für die Anzeige auf dem Monitor eigentlich ausreichend, aber für Ausdrucke etc. müssen die Linien stärker sein.

Gruß roga
Miniaturansicht angehängter Grafiken
rgschart.jpg  
Ronald
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 18:10
Wenn es nur um Ausdrucke geht, kannst du die Kantenglättung eigentlich gleich weglassen, weil die Auflösung des Druckers so viel höher ist, dass die Treppen nicht mehr auffallen sollten.

Ansonsten kann ich noch wärmstens die Graphics32-Bibliothek empfehlen. Vor allem die TPolygon32-Klasse dürfte für dich interessant sein.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#8

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 18:29
der Graphics32-Empfehlung kann ich mich nur anschließen. Und diese Komponente ergänzen : GR32_Lines von Angus http://angusj.com/delphi/
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 19:33
Du kannst GDILineTo ja umbennen wie Deine bisherige Prozedur heißt SLineTo....


Die Dateien
GDIPAPI,GDIPOBJ
in Deinen Projektordner oder in den Pfad kopieren

Die Optimierung hier bestand darin, keinen bei Dir bestehenden Code anpassen zu müssen....

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,GDIPAPI,GDIPOBJ, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

Function ColorToTGPColor (c : Tcolor; trans : Byte = 255):TGPColor;
Type
 TBarry=Array[0..3] of Byte;
Var
 Barry:TBarry;
 R:Byte;
begin
  move(C,Barry,4);
  R:=Barry[2];
  Barry[2]:=Barry[0];
  Barry[0]:=R;
  Barry[3]:=trans;
  move(Barry,Result,4);
end;

Procedure GDILineTo( C:TCanvas; x,y:Integer);
var
  G:TGPGraphics;
  P:TGPPen;
begin
  G:=TGPGraphics.Create(C.Handle);
  G.SetSmoothingMode(SmoothingModeHighQuality);
  P:=TGPPen.Create(ColorToTGPColor(C.Pen.Color),C.Pen.Width);
  G.DrawLine(p,C.PenPos.X,C.PenPos.Y,x,y);
  P.Free;
  G.Free;
  C.MoveTo(X,Y);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Image1.Canvas.MoveTo(10,10);
  Image1.Canvas.Pen.Color := clBlue;
  Image1.Canvas.Pen.Width := 3;
  GDILineTo(Image1.Canvas, 100,100);
  Image1.Canvas.Pen.Color := clRed;
  GDILineTo(Image1.Canvas, 400,10);
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Chart mit sauberen Linien

  Alt 9. Jan 2011, 22:42
Zitat:
Die Dateien GDIPAPI,GDIPOBJ in Deinen Projektordner oder in den Pfad kopieren
Das hat leider nicht gereicht. Nach einigen Recherchen im Internet habe ich eine neue LIB mit folgenden Dateien erstellt:

DirectDraw.pas
DirectX.inc
GDIPAPI.pas
GDIPOBJ.pas
GDIPUTIL.pas
Jedi.inc

Bei der Compilierung traten Fehler in der DirectDraw.pas beim Type PDirectDrawSurface mit folgender Meldung auf:

"[DCC Fehler] DirectDraw.pas(358): E2154 Typ 'IDirectDrawSurface' benötigt Finalization - nicht im varianten Record erlaubt"

Sicher keine saubere Lösung, aber ich habe diese Stellen vorübergehend deaktiviert und alles läuft super, die eingestellte Linienstärke wird jetzt berücksichtigt (Siehe angehängtes Bild)

Bummi, vielen DANK für Deinen Lösungsansatz! Werde mich wohl demnächst intensiver mit GDI+ und dessen Möglichkeiten beschäftigen müssen. Eine Frage noch: Wie kompatibel ist GDI zu den verschiedenen Windows- und Delphi-Versionen?
Miniaturansicht angehängter Grafiken
gdilines.jpg  
Ronald
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
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