Ich werde mir mal deinen Code zu Gemüte führen (ein paar Kommentare wären gut gewesen
), aber:
Delphi-Quellcode:
function Vorkomma (z : real) : Integer;
// Ne Menge Code
Trunc
function Nachkomma (z : real) : Real;
Ceil
function mkslash (s : string) : string;
IncludeTrailingPathDelimiter
[edit] Ich arbeite mich vor:
Delphi-Quellcode:
if Nachkomma (YPos + YFak) <> 0 then
Yend := Vorkomma (YPos + YFak) + 1
else
Yend := Vorkomma (YPos + YFak);
Yend := Ceil(YPos + YFak);
Hier könnte deine Funktion sogar schieflaufen, da durch die Ungenauigkeit von Fließkommavariablen ein Gleich/Ungleich-Vergleich von diesen meistens nicht das gewünschte Ergebnis liefert.
[edit2]
Delphi-Quellcode:
p : pbytearray;
(p[x0*3+2],p[x0*3+1],p[x0*3])
PRGBTriple
[edit3]
Tut mir leid, aber ich blicke da einfach nicht durch
.
Ich würde es einfach so machen
:
Delphi-Quellcode:
uses GR32;
procedure Foo(NewWidth, NewHeight: Integer; ...);
var
From, To: TBitmap32;
xFactor, yFactor: Single;
x, y: Integer;
begin
From := TBitmap32.Create;
From.LoadFromFile(...);
To := TBitmap32.Create;
xFactor := NewWidth / From.Width;
yFactor := NewHeight / From.Height;
To.SetSize(NewWidth, NewHeight);
for x := 0 to From.Width - 1 do
for y := 0 to From.Height - 1 do
To.PixelF[x * xFactor, y * yFactor] := From.Pixel[x, y];
...
GR32-Lib
PS: Warum verwendest du ScanLine und nachher doch Pixel
?