位图在面板中没有正确对齐

问题描述:

我一直在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

我需要做的就是设置像素偏移模式。

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