我今天必须开始在课堂上制作一个拼图/图像拼图,这很好,除了我的图像保持/不断重新缩放的事实。
图像本身是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吗?
提前感谢您的回答
答案 0 :(得分:4)
这是因为图像的DPI。您可以使用Graphics.DrawImageUnscaled
:
e.Graphics.DrawImageUnscaled(Bmp, BmpLoc);
您可以使用HorizontalResolution
和VerticalResolution
属性检查图像的DPI(分辨率)。通常屏幕的分辨率为96 DPI(每英寸点数)。但是,这可以在Windows中配置。如果图像的分辨率与此不同,则缩放图像以保持其屏幕尺寸。