2012-04-19 7 views
1

私はずっとGoogleを見てきましたが、私の問題の解決策を見つけることができません。ビットマップがパネルに適切に配置されていない

問題は、ビットマップをパネルにペイントすることです。いくつかの奇妙な理由により、ビットマップ全体がパネルの左上にオフセットしているように見えます。地図を作成するときに混乱を招きます。余分なメモとして、ビットマップはそれ自身より大きなパネルに描かれていました。 (例:bitmap.dimensions == 64x64、panel.dimensions == 512x512)。

private void redrawCityPanel() 
    { 
     Image cityImage = this.cityBitmap; 

     Graphics panel_CityGraphics = this.panel_City.CreateGraphics(); 
     panel_CityGraphics.Clear(this.panel_City.BackColor); 
     panel_CityGraphics.InterpolationMode = InterpolationMode.NearestNeighbor; 
     panel_CityGraphics.DrawImage(cityImage, panel_City.DisplayRectangle); 
    } 

ご迷惑をおかけして申し訳ありません。私は画像を投稿するが、十分なポイントを獲得していない。

+0

解決策を見つけました。あなたがする必要があるのは、次のコード行を追加することだけです。 – MrMcKizzle

+0

panel_CityGraphics.PixelOffsetMode = PixelOffsetMode.Half; – MrMcKizzle

+0

「ポイントの代わりにピクセルを四角形で描画する」という意味はよく分かりませんが、サイズ変更が発生した場合、NearestNeighborを使用すると画像が酷く見えるようになります。代わりにHighQualityBicubicを使用してみてください。 – Asik

答えて

3

ピクセルオフセットモードを設定するだけでした。

private void redrawCityPanel() 
{ 
    Image cityImage = this.cityBitmap; 

    Graphics panel_CityGraphics = this.panel_City.CreateGraphics(); 
    panel_CityGraphics.Clear(this.panel_City.BackColor); 
    panel_CityGraphics.InterpolationMode = InterpolationMode.NearestNeighbor; 

    panel_CityGraphics.PixelOffsetMode = PixelOffsetMode.Half; //Added 

    panel_CityGraphics.DrawImage(cityImage, panel_City.DisplayRectangle); 
} 
関連する問題