2010-04-07 6 views
0

패널이 만들어졌습니다. This is autoscroll = true패널에 PictureBox 위치를 설정할 수 없습니다.

처음에는 이미지가있는 256x256 인 6 개의 그림 상자가 추가되었습니다. 새 그림 상자를 넣을 위치를 알 수 있도록 마지막 그림 상자 위치를 저장합니다.

패널의 오른쪽 위 (위치 (8744,8744))에 그림 상자를 추가하여 패널이 9000px로 늘어납니다.

나중에 패널에서 스크롤 할 때 버튼을 누르고 그림 상자를 패널에 추가 할 수 있습니다. 문제는 내가 picturebox의 위치를 ​​설정하고 그것을 패널에 추가 할 때 시각적으로 완전히 잘못 나오는 것입니다.

이미지를 더 추가하는 코드입니다. 내가 디버깅 및 패널 시계 경우

private void addPictureBox(Point pixelCoordinates, Bitmap image) 
{ 
     PictureBox pNewImage = new PictureBox(); 
     imagePanel.Controls.Add(pNewImage); 

     pNewImage.Image  = image; 
     pNewImage.Name  = "image_:" + pixelCoordinates.X + "_" + pixelCoordinates.Y; 
     pNewImage.Location = pixelCoordinates; 
     pNewImage.Size  = new System.Drawing.Size(256, 256); 
     pNewImage.Visible = true; 
     pNewImage.BackColor = Color.White; 

     imagePanel.Update(); 

} 

, 그것은 새로운 PictureBox를 내가 설정 한 위치를 가지고 있지만, 시각적으로, 그렇지 않은 것을 말한다.

나는 이것이 실제로 일어나는 것으로 나타났습니다. picturebox의 위치는 어디에서 스크롤했는지 + location.X입니다.

누구든지이 문제를 해결할 수있는 아이디어가 있습니까?

미리 감사드립니다.

답변

2

0,0 좌표에서 멀리 이동 한 후에 그림 상자를 추가하는 경우 pixelCoordinates에 스크롤 양을 추가하여 그림을 추가해야 할 수 있습니다. 계산에 imagePanel.VerticalScroll.ValueimagePanel.HorizontalScroll.Value을 사용해보세요.

+0

나중에 다시 시도하겠습니다. 나는 어제 그것을 시도했지만, 나는 내가 이미지를 생성 한 후 스크롤바 값을 조금 사용했다고 생각한다. 그리고 그것은 분명히 잘못되었습니다. 다운로드 한 이미지의 픽셀 좌표로 해시 테이블의 스크롤 막대 위치를 저장하므로 이미지의 픽셀 좌표에서 스크롤 막대 위치를 뺄 수 있습니다. – Ikky

관련 문제