![]() |
Re: Bilder drucken mit GR32lib
Die Qualität?
|
Re: Bilder drucken mit GR32lib
wenns um die Qualität geht würde ich vorher das Bild resamplen und dann mit BitBlt auf die Canvas bringen. Desweiteren war ich bisher eigentlich immer mit der Qualtitäg von StretchBlt mit Halftone-Mode zufrieden.
|
Re: Bilder drucken mit GR32lib
ach leute, ich weiss jetz, wieso die bilder so verunstaltet wurden, ich hab an drawTo das canvas.handle übergeben, anstatt die Bitmap, mit bitmap erhalte ich ein schönes bild! kann die schlechtere druckqualität vielleicht damit zusammenhängen das ich dort das printer-canvas.handle übergebe? wie könnte ich das umgehen? ich glaub wir nähern uns dem ziehl! bitte nicht aufgeben luke :D
|
Re: Bilder drucken mit GR32lib
@SirT: allerdings, da hast du recht.
der resampler ist (ich gehe da von der vorherigen version mit stretchfilter aus) auch nur zum zeichnen AUF ein TBitmap32 geeignet. @alienous: Du solltest das Bild also erst skalieren und dann auf den printer zeichnen. |
Re: Bilder drucken mit GR32lib
also meinste das so in etwa:
SrcBild -> Bitmap32_1 -> resampledResizen-> Bitmap32_2 -> Bitmap32_2.canvas übergeben an printer.canvas so in etwa? wobei Bitmap32_2 von den ausmaßen genau dem printer entspricht? setze mich sofort drann, aber das resizen mit dem resampler macht mir probleme, evntl bräuchte ich da noch was hilfe. |
Re: Bilder drucken mit GR32lib
Also ich hab da schon öfter selber was geschrieben...
Delphi-Quellcode:
So in etwa müsste es gehen, aus dem Stegreif getippt.
function ResizePropertional(Src: TBitmap32; AvailDim: TPoint): TBitmap32;
var factor: real; //Skalierungsfaktor NewDim: TPoint; //Neue Ausmaße begin factor := Min(Src.Width / AvailDim.X, Src.Height / AvailDim.Y); // Skalierungsfaktor ermitteln NewDim.X := Floor(Src.Width * factor); //Neue Breite errechnen NewDim.Y := Floor(Src.Height * factor); // " Höhe " Result := TBitmap32.Create; Result.Width := NewDim.X; Result.height := NewDim.Y; Result.Resampler := TKernelResampler.Create(Result); with Result.Resampler as TKernelResampler do //Kernelmode (=tatsächlicher Filter) zuweisen if (factor > 1) then//Vergrößerung KernelMode := kmMitchell else //Verkleinerung KernelMode := kmLanczos; Result.Draw(Src.Width,Src.Height,Result,Result.Width,Result.Height); end; Bin mir bei der Zuweisung der Resampler und beim zeichnen aber überhaupt nicht sichwer, ob das so kompiliert geschweige denn funktioniert. Sollte es das tun, wäre es mir natürlich eine Ehre, den Code für die CodeLib vorzuschlagen ;) |
Re: Bilder drucken mit GR32lib
hm ok da fällt mir auf, das ich wieder bitmap32 zurückbekomme, wie kannich das dann auf das printer.canvas malen ohne verluste?
|
Re: Bilder drucken mit GR32lib
wenn du auf das die Canvas ein Handle hast mit BitBlt
|
Re: Bilder drucken mit GR32lib
alles klar, scheint zu klappen, morgen werd ich mir die qualitätsunterschiede anschauen, hoffentlich war es das :hi:
@luke: wenns das war, schau ich mir deinen code an :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 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-2025 by Thomas Breitkreuz