좋아, 이것은 내가 완전한 답변을 작성합니다 너무 복잡하기. 실제로 당신이 할 수있는 일은 (오픈 소스를 가지고있는 것처럼) 내부에서 "해킹"하는 것입니다 - 소스 코드를 변경하고 필요에 맞게 조정하십시오.
옵션 :
1. 변경 내부 구현 :
하는 방법 ScalePictureBoxToFit()
을 찾아 ScalablePictureBoxImp.cs
파일에 도착하고 후에 코드를 추가 라인 :
//some previous code
this.pictureBox.Left = left;
this.pictureBox.Top = top;
this.AutoScroll = true;
// add this line under:
this.AutoScrollPosition = new Point(this.Width/2, this.Height/2);
지금 당신은 간단하게 사용할 수 있습니다 이전과 같은 구성 요소이며 중간에서 크기를 조정하면 모든 작업을 수행 할 수 있습니다 (화면을 제대로 맞추려면 더 많은 수학이 필요할 수도 있음).
2. 변경 외부 구현 :
저자 자신이 이벤트를 후킹하고 그냥 랩 된 객체를 사용하는 내부 구현에 대한 래퍼를 ussing (이 마우스의 버튼을 눌러 같은입니다 1 와이어를 다른 와이어와 연결하는 대신). 구현 다음
파일
ScalablePictureBox.cs
편집 생성자에서
및 추가
이제
public ScalablePictureBox()
{
//some code ...
this.pictureTracker.ScrollPictureEvent += new PictureTracker.ScrollPictureEventHandler(this.scalablePictureBoxImp.OnScrollPictureEvent);
this.pictureTracker.PictureTrackerClosed += new PictureTracker.PictureTrackerClosedHandler(this.pictureTracker_PictureTrackerClosed);
//Enter the line below to hook on event
this.scalablePictureBoxImp.ZoomRateChangedEvent += ScalablePictureBoxImp_ZoomRateChangedEvent;
}
당신은 확대의 이벤트에 푹했고, 당신은 단지 스크롤 조정해야합니다
private void ScalablePictureBoxImp_ZoomRateChangedEvent(int zoomRate, bool isFullPictureShown)
{
this.scalablePictureBoxImp.AutoScrollPosition = new Point(this.Width/2, this.Height/2);
}
내부 구현을 ScalablePictureBox가 이벤트 ZoomRateChangedEvent
을 호출합니다. ->이 줌이 변경되면 창 크기를 가져 와서 스크롤 단추를 중간 위치로 이동합니다. 이것은 당신이 요구하는 어떤 방식 으로든 조정될 수 있습니다.
원래 저자는 ScalablePictureBoxImp
이라고 쓰고 싶었고 래퍼는 테스트/단순한 목적으로 만 추가되었다고 생각합니다. 모든 것을 스스로 작성하거나 조정하는 경우에는 완전히 당신에게 달려 있습니다. - 올바른 방법은 외부 구현을 사용해야합니다.
당신은'WinForms' 또는'WPF'를 사용하고 있습니까? – Tatranskymedved
@Tatranskymedved Winforms – help
게시 된 기사에서 두 가지 옵션이 있습니다. 원본 소스 코드를 다운로드하여 수정할 수 있으므로 직접 그림을 가운데에 배치 할 수 있습니다. 또는 함수 줌 기능에 대한 래퍼를 만들 수 있습니다. 버튼을 누르면 줌을 호출 한 다음 카메 라 (그림)를 올바른 좌표로 이동시킵니다. – Tatranskymedved