Discussion:
Grafik
(zu alt für eine Antwort)
Martin Schade
2019-02-01 18:43:10 UTC
Permalink
es ist schon eine Weile her ... die Zeit vergeht ...
Achim Kalwa 26.11.16
haben die ~ es inzwischen geschafft, GDI+ und OpenGL offiziell zu
unterstützen? Das man das selber einbinden kann, ist mit bekannt.
Winapi.GDIPAPI.pas
Winapi.GDIPOBJ.pas
Winapi.GDIPUTIL.pas
Winapi.OpenGL.pas
Winapi.OpenGLext.pas
Kurzes Beispiel für GDI+ (unvollständig!)
var
aGraphics : TGPGraphics;
aPen : TGPPen;
aBrush : TGPBrush;
R : TGPRectF;
begin
...
R.X := 0;
R.Y := 0;
R.Width := TPaintBox(Sender).ClientWidth-1;
R.Height := TPaintBox(Sender).ClientHeight-1;
aGraphics := TGPGraphics.Create(TPaintBox(Sender).Canvas.Handle);
aPen := TGPPen.Create(MakeColor(0, 0, 128), 2);
aBrush := TGPSolidBrush.Create(MakeColor(200, 100, 100));
aGraphics.SetSmoothingMode(SmoothingModeAntiAlias8x8);
aGraphics.FillEllipse(aBrush, R);
aGraphics.DrawEllipse(aPen, R);
...
Meintest Du so etwas?!
Inzwischen habe ich mit Delphi 10.3 geholt - falls jemand es nicht
mitbekommen hat,
https://www.embarcadero.com/de/products/delphi/starter?utm_source=heise-dl
Es ist schön, daß die inzwischen eingesehen haben, daß ~~~ Nun lohnt es
sich, mal zu gucken, was es neues gibt.
In der Hilfe erfährt man, daß es nun 3 Möglichkeiten zur Grafik-Ausgabe
gibt:
1. mal - wie bisher - die über's GDI.
2. das GDI+, die Interface-Definitionen, die ich 2004 aus dem IN geholt
habe, sind nun mit dabei. Nachdem ich den Suchpfad umgestellt habe, ist der
Programmteil wie damals compiliert worden. Eigentlich nichts Neues. Nur die
GDI+ -Hilfe 'gdicpp.chm', die damals mit dabei gewesen ist, habe ich noch
nicht bemerkt.
3. ist für OpenGL eine Interface-Definitionen dabei, aber einiges heißt
anders. Daß CreateRenderingContext() nicht mehr eine Funktion, sondern
eine Prozedur sein soll, ist mir zweifelhaft vorgekommen, und ich habe ins
WWW geschaut:
Auf https://wiki.delphigl.com/index.php/Tutorial_Quickstart steht, daß der
Header nichts taugt, und man besser die dglopengl nehmen soll. Damit hat es
dann auch schnell funktioniert, nur - das lief 2004 mit Delphi 4 auch so.
4. gibt es für DirectX sogar eine spezielle TDirect2DCanvas . Allerdings
kommt man mit der Hilfe nicht weiter, und da muß man wieder ins WWW schauen.
Auf
https://community.idera.com/developer-tools/b/blog/posts/delphi-2010-directwrite-hello-world-example
ist ein Beispiel, und danach habe ich immerhin einige Linien erscheinen
lassen. Nur wird damit auch klar, daß es dasselbe Koordinatensystem wie beim
einfachen GDI hat, und keine Koordinatentransformation kann. Zwar hab' ich
das, bevor es GDI+ gab, schon mal programmiert, und könnte es einbinden,
aber da würde nichts anderes bei herauskommen als das GDI+.

Eine Schwierigkeit ergab sich aber doch:

Das Programm, mit dem ich es probiert habe, hat ältere Vorläufer von anderen
Pascal-Compilern. Daher steht da ein Rewrite(FA, FName), und das ist in
dieser Compiler-Linie so nicht üblich. Allerdings haben Delphi 4 und Delphi
7 das akzeptiert und wunschgemäß compiliert. Delphi 10.3 hat zwar auch nicht
gemeckert, aber die Datei ist danach nicht richtig offen, d.h. es gab auch
keinen E/A-Fehler. Das Programm bleib in der Writeln-Anweisung hängen. Und
das muß man erstmal finden, zumal ich eher Fehler in der Grafik erwartet
hatte.

Was mir noch aufgefallen ist: Die Satzlänge der Records ist eine andere,
aber das hat sich schon von Delphi 4 auf ~ 7 geändert. Und - Delphi 4
startet von allen Compilern am schnellsten, bei Delphi 10.3 wartet man erst
man 'ne Weile, bis sich was tut.

Grüße, Martin Schade
Achim Kalwa
2019-02-03 11:45:48 UTC
Permalink
Moin,
Post by Martin Schade
es ist schon eine Weile her ... die Zeit vergeht ...
Du sagst es!
Post by Martin Schade
In der Hilfe erfährt man, daß es nun 3 Möglichkeiten zur Grafik-Ausgabe
[snip]

Danke für die Zusammenfassung!

Achim

Lesen Sie weiter auf narkive:
Loading...