![]() |
Chart mit sauberen Linien
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
![]() Vielen Dank roga |
AW: Chart mit sauberen Linien
Ich würde Dir GDI+ ans Herz legen..
![]() |
AW: Chart mit sauberen Linien
Das hilft mir im Moment nicht weiter - trotzdem Danke für Deine Antwort.
roga |
AW: Chart mit sauberen Linien
![]() Hier habe ich was gefunden. Und hier in der BresenhamLibrary - Radius könnte PenWidth sein: ![]() Diese Art eine Linie zu malen kommt von Herrn Bresenham. Hier die Anleitung dazu: :cheer: ![]() Oder guck mal Google durch. Übrigens... Karstadt gibt es nicht mehr |
AW: Chart mit sauberen Linien
Zitat:
|
AW: Chart mit sauberen Linien
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
AW: Chart mit sauberen Linien
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 ![]() ![]() |
AW: Chart mit sauberen Linien
der Graphics32-Empfehlung kann ich mich nur anschließen. Und diese Komponente ergänzen : GR32_Lines von Angus
![]() |
AW: Chart mit sauberen Linien
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. |
AW: Chart mit sauberen Linien
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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