@Gandalfus
StrechDraw ist zwar einfach zu nutzen und vergrössert auch.
Glättet aber nicht, sonderen zeichnet nur die Pixel mehrfach.
Und wenn die Vergrösserung unglücklich gewählt ist (z.B. 150%), sieht es echt bescheuert aus.
Add:
Delphi-Quellcode:
QI = QuellImage
ZI = ZielImage
Variablen = Integerr
...I[X, Y] = entspricht einem Farbwert des Pixels (z.B. Rot)
For X = 0 to ZI.Width - 1 do
For Y = 0 to ZI.Height - 1 do Begin
X2 = Trunc(QI.Width * (X / ZI.Width));
Y2 = Trunc(QI.Height * (Y / ZI.Height));
PX = Frac(QI.Width * (X / ZI.Width));
PY = Frac(QI.Height * (Y / ZI.Height)));
ZI[X, Y] = QI[X2, Y2] * (1 - PX) * (1 - PY) +
QI[X2 + 1, Y2] * PX * (1 - PY) +
QI[X2, Y2 + 1] * (1 - PX) * PY +
QI[X2 + 1, Y2 + 1] * PX * PY;
End;
Ich hoffe, du verstehst was ich meine. Hab es möglichts einfach gehalten.
Soll nur das Prinzip für eine Vergrösserung mit linearen Übergängen darstellen.