2013-03-07 2 views
1

오늘 수업에서 이미지/퍼즐을 만들기 시작해야만했습니다. 내 이미지가 그대로 유지되거나 자체적으로 크기가 조정되는 것을 제외하고는 괜찮 았습니다.왜 내 이미지의 크기가 자동으로 조정됩니까?

이미지 자체는 300 * 300이지만 이미지 자체 크기를 사용하여 크기를 선언하더라도 코드를 실행하면 192 * 192가됩니다. 당신이 볼 수있는, 그것은 사각형의 크기의 비트 맵 크기를합니다, 그래서 300 * 300를 표시하지 정상적으로

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); 
     } 
    } 

:

코드는 다음과 같이 구성?

미리 답변 해 주셔서 감사합니다.

+0

흠. 그 화면에서 192px로 끝나는 것을 어떻게 확인합니까? 스크린 샷? 런타임시 Bmp.Size 란 무엇입니까? – usr

+0

@usr 지그 소 퍼즐 과제의 일부는 커서의 위치를 ​​추가하는 것이므로 커서가 어떤 픽셀인지 볼 수 있습니다. Screenshot : http://imageshack.us/a/img9/7690/37798533.png 흰색 숫자는 BMP의 높이입니다 –

답변

4

이것은 이미지의 DPI 때문입니다. 당신은 Graphics.DrawImageUnscaled을 사용할 수 있습니다 : 당신은 HorizontalResolutionVerticalResolution 속성을 사용하여 이미지의 DPI (해상도)를 확인할 수 있습니다

e.Graphics.DrawImageUnscaled(Bmp, BmpLoc); 

. 일반적으로 화면의 해상도는 96 DPI (인치당 도트 수)입니다. 그러나 이것은 Windows에서 구성 가능합니다. 이미지의 해상도가 다른 해상도 인 경우 이미지의 화면 크기가 유지되도록 크기가 조정됩니다.

+0

예,이 방법이 효과적이었습니다! 해상도를 변경했는데 (아무 이유없이 146으로 설정 됨) 96으로 정상적으로 작동했습니다. 도와 줘서 고맙다! –

관련 문제