![]() |
GR32: Aus einem Pixel mehrere Pixel machen
Hi,
ich teste grade ein bisschen die GR32. Jetzt dachte ich, ich versuche mal ein Bitmap zu vergrößern. Aber nicht per Stretch oder so, sondern mal was selbst versuchen. Dazu dachte ich mir das: Ich nehme ein Pixel aus dem Source und male, je nach Faktor (angenommen der ist jetzt 3), 3 Pixel mit den Koordinaten [0,0], [0,1], [0,2], [1,0], [2,0]. Aber das scheint nicht zu klappen. Hier ist meine Procedure:
Delphi-Quellcode:
Nach ein paar Durchläufen erhalte ich bei "Dest.Pixel[X...]" eine Zugriffsverletzung. Wenn ich dort dieses "YAnf" weglasse bekomme ich diese nicht. Ich gehe schwer davon aus, dass ich die Größe des DestBitmaps verlasse. Aber ich glaube, dass meine Procedure auch nicht so richtig hinhaut.
procedure TForm1.DoAStretch(Source, Dest: TBitmap32; Faktor: Integer);
var x, y: Integer; Temp: Integer; Color: TColor32; XAnf, YAnf: Integer; begin Dest.SetSize(Source.Width * Faktor, Source.Height * Faktor); Dest.Clear; XAnf := 0; YAnf := 0; for Y := 0 to Source.Height do begin for X := 0 to Source.Width do begin Color := Source.Pixel[X, Y]; for Temp := 0 to Faktor do begin Dest.Pixel[X + Temp + XAnf, Y + Temp + YAnf] := Color; // Zugriffsverletzung nach ein paar Durchläufen end; Inc(XAnf, Faktor); end; Inc(YAnf, Faktor); end; end; Was meint ihr dazu? |
Re: GR32: Aus einem Pixel mehrere Pixel machen
kann ja erstmal gar nicht gehen, weil du mit jedem i nur ein pixel weiterspringst und deshalb alle (faktor) pixel bis auf das erste qwieder überschreibst. und zum schluss läufst du natürlich um YAnf/XAnf aus dem Bild raus.
du musst also 1. das bild größer machen und 2. in deinem dest.pixel das ganze jeweils noch mal mit faktor multiplizieren. |
Re: GR32: Aus einem Pixel mehrere Pixel machen
Muss natürlich von 0 bis Width - 1 bzw. Height - 1 gehen :zwinker: .
Zitat:
Um Zugriffsverletzungen zu umgehen, kannst du auch PixelS verwenden, siehe auch naming conventions in der Hilfe. Ich würde das Problem aber genau andersherum anpacken: Das Programm geht durch alle Destination-Pixel durch und sucht sich dann den passenden Pixel aus dem Source-Bitmap, wobei es auch zwischen mehreren Pixeln landen kann (PixelFS). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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