2009-04-13 7 views
0

Ich habe ein Problem auf roating ein Bild auf einer Leinwand in GDI +, ich den folgenden Code verwenden, aber ich finde, es gibt alias am Rande.Wie vermeide ich Alias ​​beim Drehen des Bildes in gdi +?

myPathMatrix.Rotate(GetDCAngle(), MatrixOrderAppend); 
myPathMatrix.Translate(
GetDCX(), 
GetDCY(), 
MatrixOrderAppend); 
canvas->SetTransform(&myPathMatrix); 
canvas->Draw(XXX); 

habe ich den folgenden Code den Alias ​​zu entfernen, scheiterte aber.

canvas->SetInterpolationMode(InterpolationMode::InterpolationModeHighQualityBicubic); 
canvas->SetSmoothingMode(SmoothingModeAntiAlias); 

Wie kann ich den Alias ​​an gedrehtes Bild der Kanten zu entfernen.

Vielen Dank!

Antwort

0

Es ist eine Weile her, dass ich mit GDI + gearbeitet, aber ich würde annehmen, dass es keine wirksame Option ist Anti-Aliasing um die Kanten zu entfernen, wenn sie sich drehen. Der Grund ist im Grunde, dass Pixel quadratisch sind. Um ein Bild mit einer Menge andere als ein Vielfaches von 90 Grad zu drehen, müssen Sie irgendeine Art von Interpolation verwenden Pixelfarben zu schätzen, wo gab es nicht wirklich vor Pixeln.

Also, wenn es nichts in der Bibliothek speziell an den Rand Anti-Aliasing zu nehmen, haben Sie darüber nachgedacht, harte Linien in der Hintergrundfarbe entlang der Grenzen zu zeichnen? Es sollte einfacher sein, diese Linien ohne Antialiasing zu zeichnen.