none
使用GDI+成倍放大的问题 RRS feed

  • 问题

  • 我想对一些像素图像进行成比例的放大。于是我用了以下代码进行放大:

    Dim DImg As New Bitmap("00.png") '图像大小为32x32
    Dim Img As New Bitmap(500, 500)
    Dim G As Graphics = Graphics.FromImage(Img)
    G.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor
    
    '第一种方法
    G.ScaleTransform(2.0F, 2.0F)
    G.DrawImage(DImg, 0, 0)
    G.DrawImage(DImg, 32, 0)
    
    '第二种方法
    G.DrawImage(DImg, New Rectangle(New Point(0, 0), New Size(64, 64)), New Rectangle(New Point(0, 0), DImg.Size), GraphicsUnit.Pixel)
    G.DrawImage(DImg, New Rectangle(New Point(64, 0), New Size(64, 64)), New Rectangle(New Point(0, 0), DImg.Size), GraphicsUnit.Pixel)

    代码中尝试对图像00.png进行两倍放大后进行并排排列。但我发现以上两种方法输出的图像中两个放大的图像之间有1像素的间隙。而且放大的图像的最左和最上一排像素被切去了一半。放大的图像也只有63x63大小(放大两倍不应该是64x64么?)。倍率越大,间隙也会变大,图像尺寸偏离程度也越加严重。

    我换用C#,换用VS2010写都是一样的问题。请问是我理解错了吗?

    2019年6月6日 19:06

答案

全部回复