2012-04-19 23 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 2012-04-19 06:42:28

+0

panel_CityGraphics.PixelOffsetMode = PixelOffsetMode.Half; – MrMcKizzle 2012-04-19 06:42:41

+0

我不確定你的意思是「畫像素爲正方形而不是點」,但使用NearestNeighbor會使你的圖像看起來像廢話,如果有任何調整大小發生。嘗試使用HighQualityBicubic代替。 – Asik 2012-04-19 06:43:34

回答

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); 
}