Wenn es nicht unter Windows 95 laufen muss, kannst du für sowas auch prima die
GDI+ nehmen, die bei Windows XP dabei ist und die es als Redistributable für Windows 98/Me und NT4/2000 gibt. Eine entsprechende Delphi-
Unit ist auch schnell gefunden. Die
GDI+ unterstützt Alphablending, Antialiasing, "weiche" Skalierung (also das was du willst), und damit sparst du dir eine Menge Code.
Wenn du es dennoch von Hand machen willst, hier ein Tipp:
Wenn du z.B. 20 auf 25 Pixel vergrößern willst, dann musst du diese 20 Pixel GLEICHMÄSSIG auf die 25 verteilen, also auch mit Nachkommastellen. Dann kannst du nämlich für jeden Pixel (besser: Jedes Pixelzentrum) zwischen den beiden links und rechts davon gelegenen Pixeln deine lineare Interpolation durchführen.
Zum Beispiel vier auf fünf Pixel:
Code:
Das sind die originalen vier Pixel(-zentren):
1) X----X----X----X
Das sind die vier Pixel, verteilt auf die Länge von fünf Pixeln:
2) X------X------X------X
Und jetzt musst du für diese Stellen die lineare Interpolation berechnen:
3) X----X----X----X-----X
Verstehste?
Der zweite Pixel von links liegt etwa auf dreiviertel der Strecke der "originalen gestreckten" Pixel, also wird er 1/4 mal der linke Pixel und 3/4 mal der rechte Pixel usw.