最近在寫工具的時候發現了一個很惡心的問題,當用DrawImage做圖像放大的時候C#的默認放大算法不是NearestNeighbor算法,而Java Swing的drawImage放大算法默認為NearestNeighbor算法,解決方法是:
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
本以為這樣就解決問題了,結果放大出來的圖像左上頂點還少了半個像素,也就是說如果放大圖像是8倍的話,那麼放大圖像的寬高各少4個像素,不知道C#為什麼這樣做,據說是因為浮點與整形的捨入問題造成的,果真沒有Java方便啊,解決方法是:
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;