![]() |
TBitmap32 verlustfrei stretchen funzt nicht
Hi,
ich will ein Bitmap verlustfrei vergrößern (also ohne dass es verpixelt wird, wie beim normalen TBitmap.Canvas.StretchDraw). Dazu habe ich mir die Graphics32 runtergeladen und verwende nun ein TBitmap32 aus der Unit GR32. Wenn ich ![]() Ohne StretchFilter wirds bei Draw natürlich genauso verpixelt. Was kann ich tun? |
Re: TBitmap32 verlustfrei stretchen funzt nicht
1. verlustfrei geht per definition NICHT. es gibt gute interpolationsfilter, die das bild je nach auflösung recht gut aussehen lassen.
2. das modell wurde bei GR32 in version 8.1 (?) komplett umgestellt. du arbeitest jetzt mit resamplern - bitte hier weiterlesen: [dp]gr32 resampl*[/dp]. |
Re: TBitmap32 verlustfrei stretchen funzt nicht
Helfen kann ich dir bei dem Problem nicht, ich habe bloß eine weitere Sache gefunden, die du benutzen könntest (vielleicht funktionierts ja damit):
Auf ![]() ![]() Einen Versuch ists denke ich wert! :wink: |
Re: TBitmap32 verlustfrei stretchen funzt nicht
@DGL-luke: Also erstmal Danke für Deine Antwort!
Habe jetzt folgenden Code, allerdings wird es genauso verpixelt dargestellt wie vorher :?
Delphi-Quellcode:
BMP32 ist ein TBitmap32, BMP ein normales TBitmap.
BMP32.Width := Round(BMP.Height*Factor);
BMP32.Height := BMP.Height; RES := TKernelResampler.Create(BMP32); RES.Kernel := TMitchellKernel.Create; //oder TLanczosKernel, ändert nix BMP32.Draw(Rect(0,0,BMP32.Width,BMP32.Height), Rect(0,0,BMP.Width,BMP.Height), BMP.Canvas.Handle); Das Bitmap soll nur in der Breite gestreckt werden, da das Quellbitmap in der Breite gestaucht ist. Nachtrag: Wenn ich RES - wie man es ordentlich machen sollte - mit try..finally auch wieder freigeben will, gibts ne Zugriffsverletzung. Warum denn das ? @TonyR: Ich schau's mir mal an... |
Re: TBitmap32 verlustfrei stretchen funzt nicht
Wäre es zu viel verlangt, erst einmal in der Hilfe unter TBitmap32.Draw nachzuschlagen ;) ?
@edit: Zitat:
|
Re: TBitmap32 verlustfrei stretchen funzt nicht
Zitat:
Meinst Du anstatt BMP.Canvas.Handle soll ich wieder ein TBitmap32 verwenden? Hab ich ausprobiert, bringt keine Änderung... |
Re: TBitmap32 verlustfrei stretchen funzt nicht
Da es mit den Graphics32 nicht so richtig funktioniert, habe ich nun mal GraphicEx ausprobiert:
Damit funzt es einwandfrei und der Code ist auch viel einfacher:
Delphi-Quellcode:
BMP ist ein normales TBitmap, es ist das Quellbitmap und auch das neue gestretchte Bitmap.
Stretch(NewWidth, NewHeight, sfLanczos3, 0, BMP);
thx an TonyR für den Tipp! :thumb: |
Re: TBitmap32 verlustfrei stretchen funzt nicht
Zitat:
|
Re: TBitmap32 verlustfrei stretchen funzt nicht
Ach so hast Du das gemeint...
Hatte in der Hilfe nur nach Draw geschaut, weil: Zitat:
Hier braucht man nur ein Bitmap (nicht zwei), das ist dann auch das normale Bitmap und kein TBitmap32, außerdem muss man nicht diese extra Objekte für den Resampler erzeugen, usw... Trotzdem danke für Deine Hilfe! [Nachtrag] Zitat:
Wo steht das denn??? Also ![]() |
Re: TBitmap32 verlustfrei stretchen funzt nicht
Zitat:
Beim Verkleinern schaut das aber wieder etwas anders aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 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