为什么我的图像会自动重新缩放?

时间:2013-03-07 22:42:22

标签: c#

我今天必须开始在课堂上制作一个拼图/图像拼图,这很好,除了我的图像保持/不断重新缩放的事实。

图像本身是300 * 300,但是当运行代码时,它变为192 * 192,即使我使用图像自己的大小来声明大小。

代码包括:

public partial class Form1 : Form
{
    private Bitmap Bmp;
    private Point BmpLoc;

    int x = 0, y = 0;

    public Form1()
    {
        InitializeComponent();
        this.Paint += new System.Windows.Forms.PaintEventHandler(Form1_Paint);
    }

    private void showButton_Click(object sender, EventArgs e)
    {
        Bmp = new Bitmap("C:\\Users\\Admin\\Desktop\\img.png");
        BmpLoc = new Point(0, 0);
        Rectangle R = new Rectangle(BmpLoc, Bmp.Size);
        int noot = Bmp.Size.Height;
        label3.Text = noot.ToString();

        this.Invalidate(R);
    }
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        if (Bmp != null)
        {
            e.Graphics.DrawImage(Bmp, BmpLoc);
        }
    }

正如你所看到的,它取了矩形大小的位图大小,所以不应该只显示300 * 300吗?

提前感谢您的回答

1 个答案:

答案 0 :(得分:4)

这是因为图像的DPI。您可以使用Graphics.DrawImageUnscaled

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc);

您可以使用HorizontalResolutionVerticalResolution属性检查图像的DPI(分辨率)。通常屏幕的分辨率为96 DPI(每英寸点数)。但是,这可以在Windows中配置。如果图像的分辨率与此不同,则缩放图像以保持其屏幕尺寸。