Manfred Polak
2018-10-23 22:53:30 UTC
Moin!
Hat hier jemand Erfahrung mit Graphics32 unter Delphi 10.2? Ich hatte
schon Schwierigkeiten, das überhaupt zu installieren (das lag an zwei
blöden Schreibfehlern in einer dpk-Datei), aber am Ende ging es doch.
Ich hab das für ein Programm installiert, das Ljapunow-Diagramme
erzeugt, wobei mehrere Threads gleichzeitig am Bild werkeln. Mit
TBitmap, das ich vorher dafür verwendet hatte, ging das so halbwegs,
aber TImage32 bzw. das darin enthaltene TBitmap32 aus Graphics32
ist threadsicher, da geht das deutlich besser. Soweit funktioniert das
alles so, wie ich es mir vorgestellt hatte.
Nun wollte ich als Zugabe einige der zahlreichen in Graphics32 enthal-
tenen Filter bzw. Resampler testen, um nach Sichtung der Ergebnisse
einen oder zwei davon dauerhaft im Programm zu belassen. Aber
nichts davon hat bei mir funktioniert. Hier mal ein Beispiel:
| procedure Form1.CubicSample;
| var CubicSampler: TKernelResampler;
| Rasterizer: TRegularRasterizer;
| begin
| Rasterizer := TRegularRasterizer.Create;
| CubicSampler := TKernelResampler.Create(Image32.Bitmap);
| CubicSampler.Kernel := TCubicKernel.Create;
| Rasterizer.Sampler := CubicSampler;
| Rasterizer.Rasterize(Image32.Bitmap);
| end;
Wenn ich das so auf das Bild loslasse, tut sich darin zwar etwas, der
Rasterizer legt also los, doch als Ergebnis erhalte ich nur ein komplett
schwarzes Bild. So auch mit Lanczos, Gauss und Linear statt Cubic
getestet, selbes Ergebnis. Auch mit TProgressiveRasterizer statt
TRegularRasterizer sowie mit Rasterize() oder TRenderThread.Create()
statt Rasterizer.Rasterize() getestet - immer wird alles schwarz.
Und noch schlimmer war es mit TSuperSampler, da legt nicht mal der
Rasterizer los, sondern es tut sich entweder gar nichts, oder es gibt
einen Stack Overflow. Jedenfalls habe ich es damit nicht geschafft,
am Image32.Bitmap überhaupt irgendeine Veränderung herbeizuführen.
Die zahlreichen Beispielprogramme in Graphics32 sind keine große
Hilfe für mich. Erstens sind zumindest die zwei oder drei, die sich mit
den Resamplern befassen, übermäßig kompliziert, so dass man (oder
zumindest ich) kaum erkennt, wie man das nun am einfachsten macht.
Zweitens kompilieren die bei mir überhaupt nicht. Jedenfalls die ersten
drei, die ich versucht habe, dann hab ich's aufgegeben.
Weiß jemand, was ich da falsch mache, und hat einen Code-Schnipsel,
der unter 10.2 funktioniert?
Manfred
Hat hier jemand Erfahrung mit Graphics32 unter Delphi 10.2? Ich hatte
schon Schwierigkeiten, das überhaupt zu installieren (das lag an zwei
blöden Schreibfehlern in einer dpk-Datei), aber am Ende ging es doch.
Ich hab das für ein Programm installiert, das Ljapunow-Diagramme
erzeugt, wobei mehrere Threads gleichzeitig am Bild werkeln. Mit
TBitmap, das ich vorher dafür verwendet hatte, ging das so halbwegs,
aber TImage32 bzw. das darin enthaltene TBitmap32 aus Graphics32
ist threadsicher, da geht das deutlich besser. Soweit funktioniert das
alles so, wie ich es mir vorgestellt hatte.
Nun wollte ich als Zugabe einige der zahlreichen in Graphics32 enthal-
tenen Filter bzw. Resampler testen, um nach Sichtung der Ergebnisse
einen oder zwei davon dauerhaft im Programm zu belassen. Aber
nichts davon hat bei mir funktioniert. Hier mal ein Beispiel:
| procedure Form1.CubicSample;
| var CubicSampler: TKernelResampler;
| Rasterizer: TRegularRasterizer;
| begin
| Rasterizer := TRegularRasterizer.Create;
| CubicSampler := TKernelResampler.Create(Image32.Bitmap);
| CubicSampler.Kernel := TCubicKernel.Create;
| Rasterizer.Sampler := CubicSampler;
| Rasterizer.Rasterize(Image32.Bitmap);
| end;
Wenn ich das so auf das Bild loslasse, tut sich darin zwar etwas, der
Rasterizer legt also los, doch als Ergebnis erhalte ich nur ein komplett
schwarzes Bild. So auch mit Lanczos, Gauss und Linear statt Cubic
getestet, selbes Ergebnis. Auch mit TProgressiveRasterizer statt
TRegularRasterizer sowie mit Rasterize() oder TRenderThread.Create()
statt Rasterizer.Rasterize() getestet - immer wird alles schwarz.
Und noch schlimmer war es mit TSuperSampler, da legt nicht mal der
Rasterizer los, sondern es tut sich entweder gar nichts, oder es gibt
einen Stack Overflow. Jedenfalls habe ich es damit nicht geschafft,
am Image32.Bitmap überhaupt irgendeine Veränderung herbeizuführen.
Die zahlreichen Beispielprogramme in Graphics32 sind keine große
Hilfe für mich. Erstens sind zumindest die zwei oder drei, die sich mit
den Resamplern befassen, übermäßig kompliziert, so dass man (oder
zumindest ich) kaum erkennt, wie man das nun am einfachsten macht.
Zweitens kompilieren die bei mir überhaupt nicht. Jedenfalls die ersten
drei, die ich versucht habe, dann hab ich's aufgegeben.
Weiß jemand, was ich da falsch mache, und hat einen Code-Schnipsel,
der unter 10.2 funktioniert?
Manfred