2013-03-07 51 views
1

我不得不開始做一個拼圖/圖片拼圖今天在課堂上,這都很好,除了事實,我的圖像保存/保留重新縮放本身。爲什麼我的圖像會自動重新縮放?

圖像本身是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

嗯。你如何檢查屏幕上的結果是192像素?截圖?什麼是運行時的Bmp.Size? – usr 2013-03-07 22:46:10

+0

拼圖分配的@usr部分是增加光標的位置,這樣我就可以在光標就是像素見。截圖:http://imageshack.us/a/img9/7690/37798533.png白色數字是骨形態發生蛋白的高度 – 2013-03-07 23:04:48

回答

4

這是因爲圖像的DPI。您可以使用Graphics.DrawImageUnscaled

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc); 

您可以檢查使用HorizontalResolutionVerticalResolution性圖像的DPI(分辨率)。通常屏幕的分辨率爲96 DPI(每英寸點數)。但是這可以在Windows中配置。如果圖像的分辨率與此不同,則會縮放圖像以保持其屏幕尺寸。

+0

是的,這個工作! 我改變了分辨率(設置爲146毫無理由地)96和它工作得很好。感謝您的幫助! – 2013-03-07 23:25:16