C# 位图在面板中未正确对齐

C# 位图在面板中未正确对齐,c#,winforms,C#,Winforms,我在谷歌上搜索了很长一段时间,似乎找不到解决问题的办法 问题在于在面板上绘制位图。出于某种奇怪的原因,整个位图似乎有一个朝向面板左上角的偏移量。这使得在构建贴图时很混乱。作为一个额外的注意,位图被绘制在一个比它本身更大的面板上。e、 g.bitmap.dimensions==64x64和panel.dimensions==512x512 private void redrawCityPanel() { Image cityImage = this.cityBitm

我在谷歌上搜索了很长一段时间,似乎找不到解决问题的办法

问题在于在面板上绘制位图。出于某种奇怪的原因,整个位图似乎有一个朝向面板左上角的偏移量。这使得在构建贴图时很混乱。作为一个额外的注意,位图被绘制在一个比它本身更大的面板上。e、 g.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);
    }

很抱歉搞混了。我会发布图像,但我没有获得足够的分数。

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

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

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

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

刚刚想出了解决办法。您只需添加以下代码行panel_CityGraphics.PixelOffsetMode=PixelOffsetMode.Half;我不确定你所说的将像素画成正方形而不是点是什么意思,但是如果发生任何大小调整,使用“最近邻”将使你的图像看起来像垃圾。尝试使用高质量双三次曲线。你好,Dr_Asik,在我应用像素偏移之前。看起来整个位图稍微移到了面板的左上角。这导致了一些问题,因为我需要将像素对齐,以便能够正确地构建游戏地图。我将改写问题,使其更有意义。只是找到了解决方案。您只需添加以下代码行panel_CityGraphics.PixelOffsetMode=PixelOffsetMode.Half;我不确定你所说的将像素画成正方形而不是点是什么意思,但是如果发生任何大小调整,使用“最近邻”将使你的图像看起来像垃圾。尝试使用高质量双三次曲线。你好,Dr_Asik,在我应用像素偏移之前。看起来整个位图稍微移到了面板的左上角。这导致了一些问题,因为我需要将像素对齐,以便能够正确地构建游戏地图。我将改写问题,使其更有意义。