2016-11-08 21 views
-1

次のコードは非常に奇妙な動作をします。画像の下部に余分な余白が追加されていて、その理由がわかりません。コードの結果:c#余分なピクセルを追加するイメージのサイズ変更

enter image description here

そして、これは私が働いているコードです:

public static Image ReDraw(this Image main, int w, int h, 
     CompositingQuality quality = CompositingQuality.Default, //linear? 
     SmoothingMode smoothing_mode = SmoothingMode.None, 
     InterpolationMode ip_mode = InterpolationMode.NearestNeighbor) 
    { 
     //size 
     double dbl = (double)main.Width/(double)main.Height; 

     //preserve size ratio 
     if ((int)((double)h * dbl) <= w) 
      w = (int)((double)h * dbl); 
     else 
      h = (int)((double)w/dbl); 

     //draw 
     Image newImage = new System.Drawing.Bitmap(w, h); 
     Graphics thumbGraph = Graphics.FromImage(newImage); 
     thumbGraph.CompositingQuality = quality; 
     thumbGraph.SmoothingMode = smoothing_mode; 
     thumbGraph.InterpolationMode = ip_mode; 
     thumbGraph.Clear(Color.Transparent); 
     thumbGraph.DrawImage(main, 0, 0, w, h); 

     thumbGraph.DrawImage(main, 
     new System.Drawing.Rectangle(0, 0, w, h), 
     new System.Drawing.Rectangle(0, 0, main.Width, main.Height), 
     System.Drawing.GraphicsUnit.Pixel); 

     return newImage; 
    } 
+0

いくつかの既存のライブラリをお試しください。 –

+0

オプションではありませんが、ポータブルアプリケーションにライブラリを追加するのは簡単すぎるようです。 –

+0

あなたは**ホイールを改造していますか? –

答えて

-1

thumbGraph.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality。

+1

これを回答として追加したい場合は、これがうまくいかなければならない理由を説明してください。このように投げ込まれた情報は、あまり役に立ちません。 – Gusman

関連する問題