Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Chart mit sauberen Linien (https://www.delphipraxis.net/157349-chart-mit-sauberen-linien.html)

Bummi 10. Jan 2011 00:00

AW: Chart mit sauberen Linien
 
ab XP ist die benötigte gdiplus.dll an Bord, einsetzen tue ich es seit D7, müßte aber IMHO auch mit älteren Versionen laufen.
DirectDraw.pas meine ich unter D7 benötigt zu haben , die .inc Dateien müssen eigentlich über irgendwelche Fremdpakete da reinrutschen, ich benötige sie nicht.
Allerdings ist mein Paket von ca. 2002 und die drei Units umbenannt wegen Kompatibilitätsproblemen mit Chartkomponenten welche anscheinend gleichnamige, aber anders implementierte Units verwenden.
Wenn man davon ausgehen kann daß überwiegend Win7 aufwärts im Einsatz sein wird werde ich mir Direct2D etwas näher zu Gemüte führen.

roga 10. Jan 2011 09:11

AW: Chart mit sauberen Linien
 
Um nochmal auf folgende Fehlermeldung zurück zu kommen:

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

Eine Änderung in der Datei "DirectDraw.pas" ab Zeile 328 scheint den Fehler zu beheben:
Delphi-Quellcode:
// Delphi 5 and up don't allow interfaces in variant records
// so we have to use pointers instead (which can be type-casted into interfaces):

//{$IFDEF COMPILER5_UP}
//  PDirectDrawSurface = Pointer;
//{$ELSE}
//  PDirectDrawSurface = IDirectDrawSurface;
//{$ENDIF}

  PDirectDrawSurface = Pointer;

DeddyH 10. Jan 2011 10:03

AW: Chart mit sauberen Linien
 
Ich vermute, dass Deine Compilerversion nicht korrekt erkannt wurde und das IFDEF deshalb nicht greift. Meist wird dafür eine *.inc verwendet, ich würde diese einfach erweitern, das ist m.E.n. die sauberere Lösung.

roga 10. Jan 2011 11:21

AW: Chart mit sauberen Linien
 
Du hast Recht - hab mir die aktuelle jedi.inc geladen und alles wird korrekt erkannt. Danke!

MarcoWarm 16. Mär 2011 12:00

AW: Chart mit sauberen Linien
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ein Vorschlag:
Es geht durchaus mit der freien TChart Version glatte Kanten zu zeichnen.

Den Vorschlag dazu hab ich hier gefunden: http://www.codeproject.com/KB/GDI/AntiAliasing.aspx

Im Anhang ist ein Bild einer Anwendung, die wir bei uns im Haus verwenden. Der Graph ist ein geglättetes normales TChart.

Eckpunkte der Vorgehensweise.
  • TChart unsichtbar und 4 mal so groß wie das eigentliche Bitmap erzeugen.
    Alle Schriftarten bzw. Strichstärken mit 4 multiplizieren
  • Nach Veränderung des Chart selbiges mit Chart.PaintTo auf ein Bitmap zeichen, welches ebenfalls 4 mal die Größe des Zielbildes hat
  • Dieses Große Bild wird per
    Delphi-Quellcode:
    StretchDIBits
    auf das eigentlich anzuzeigende Bitmap gemalt (
    Delphi-Quellcode:
    SetStretchBltMode(bmpSmall.Canvas.Handle, HALFTONE);
    nicht vergessen)
  • bmpSmall kannst du dann einem TImage zuweisen und du bist fertig.

Beispiel-Code auf Anfrage

Gruß
Marco


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 2 von 2     12   

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