2013-03-07 3 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

Hm. Как вы проверяете, что заканчивается на 192px на экране? Скриншот? Что такое Bmp.Size во время выполнения? – usr

+0

@usr Часть задания головоломки заключалась в том, чтобы добавить местоположение курсора, чтобы я мог видеть, на каком пикселе находится курсор. Скриншот: http://imageshack.us/a/img9/7690/37798533.png белый номер - высота Bmp –

ответ

4

Это из ДОИ изображения. Вы можете использовать Graphics.DrawImageUnscaled:

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc); 

Вы можете проверить DPI (разрешение) изображения с использованием HorizontalResolution и VerticalResolution свойства. Обычно экран имеет разрешение 96 точек на дюйм (точек на дюйм). Однако это настраивается в окнах. Если разрешение изображения является чем-то другим, то это изображение масштабируется для сохранения размера экрана.

+0

Да, это сработало! Я изменил разрешение (было установлено 146 без причины) до 96, и он работал нормально. Спасибо за помощь! –

Смежные вопросы