Ich habe 2 Bitmaps, b1 und b2 und es gilt
b1.width = b1.height
b2.width = b2.height
b2.width >= b1.width
also beide quadratisch und b2>=b1.
Nun mache ich
Delphi-Quellcode:
w1:=b1.width;
w2:=b2.width;
StretchBlt(b2.Canvas.Handle,0,0,w2,w2,b1.Canvas.Handle,0,0,w1,w1,srccopy);
Ich suche nach einer Möglichkeit, von der Position eines beliebigen Pixel in b2 die korrespondierende Position in b1 zu ermitteln.
Das ist einfach, wenn b2 genau n mal so groß ist, wie b1, denn dann werden alle Pixel aus b1 n Mal in b2 abgebildet.
Wenn aber nicht so klare Verhältnisse herrschen, zum Beispiel w1=137 und w2=215, dann ist StretchBlts Arbeitsweise für mich nicht eindeutig klar.
Ich erziele schon ganz gute Ergebnisse mit
x1:=Round(x2*(w1-1)/(w2-1))
aber von fehlerfrei bin ich weit entfernt.