2012-07-02 3 views
0

Alex M의 코드를 배경 이미지를 패널에 그리기 위해 잘 제공했지만 PictureBoxBackgroundImage에 센터 이미지 속성이 설정되어 있으면 그려진 이미지가 늘어나지 만 가운데 맞춤되지 않는다는 것을 깨달았습니다. 지금까지이 코드가이 패널에 배경 이미지를 그립니다하지만 pictureBox1의 배경 이미지 속성을 CENTER로 설정되어있는 경우, 그것은 사각형의 중앙에 이미지를 페인트하지 않습니다어떻게 그림 상자 중심의 배경 이미지를 패널에 페인트합니까?

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawImage(pictureBox1.BackgroundImage, 
     new Rectangle(pictureBox1.Location, pictureBox1.Size)); 
} 

을 대신 직사각형에 맞게 이미지를 늘립니다.

찾을 수있는 유일한 해결책은 here입니다. 그러나 나는 그것을 이해할 수 없습니다.

답변

1

이미지가 늘어나게 된 이유는 DrawImage의 두 번째 매개 변수가 이미지를 그리는 위치와 크기를 지정하고 이미지 상자의 영역이 아닌 그림 상자의 전체 영역을 지정하기 때문입니다. 이미지 자체. 당신이 그것을 중심하려면

이 같은 것을 시도 :

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    var hPadding = (pictureBox1.Width - pictureBox1.BackgroundImage.Width)/2; 
    var vPadding = (pictureBox1.Height - pictureBox1.BackgroundImage.Height)/2; 
    var imgRect = new Rectangle(pictureBox1.Left + hPadding, pictureBox1.Top + vPadding, pictureBox1.BackgroundImage.Width, pictureBox1.BackgroundImage.Height); 
    e.Graphics.DrawImage(pictureBox1.BackgroundImage, imgRect); 
} 
+0

나는 결코 틸 지금하는 방법을 이해하지 한 것입니다. 그 응답 ekolis에 감사합니다, 그렇게 많이 감사합니다. – kev

관련 문제