2017-01-23 3 views
0

C#에 this plugin을 사용하려고합니다. 효과가 좋습니다. 그러나 확대 할 때 이미지를 중앙에 배치하는 데 어려움을 겪고 있습니다. 기본적으로 확대/축소 할 때마다 그림 상자는 왼쪽 상단 모서리에 초점을 맞 춥니 다. 나는 중심에 집중하고 싶다.그림 상자 중앙에 배치하는 방법

아이디어가 있으십니까? 나는 광범위하게 검색했으며이 플러그인 내에서 이것을 수행하는 예제를 찾을 수 없습니다.

플러그인 당신은 확대 이벤트에 연결할 수 있습니다 방식으로 열려 있지 :

+0

당신은'WinForms' 또는'WPF'를 사용하고 있습니까? – Tatranskymedved

+0

@Tatranskymedved Winforms – help

+0

게시 된 기사에서 두 가지 옵션이 있습니다. 원본 소스 코드를 다운로드하여 수정할 수 있으므로 직접 그림을 가운데에 배치 할 수 있습니다. 또는 함수 줌 기능에 대한 래퍼를 만들 수 있습니다. 버튼을 누르면 줌을 호출 한 다음 카메 라 (그림)를 올바른 좌표로 이동시킵니다. – Tatranskymedved

답변

1

좋아, 이것은 내가 완전한 답변을 작성합니다 너무 복잡하기. 실제로 당신이 할 수있는 일은 (오픈 소스를 가지고있는 것처럼) 내부에서 "해킹"하는 것입니다 - 소스 코드를 변경하고 필요에 맞게 조정하십시오.

옵션 :

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이라고 쓰고 싶었고 래퍼는 테스트/단순한 목적으로 만 추가되었다고 생각합니다. 모든 것을 스스로 작성하거나 조정하는 경우에는 완전히 당신에게 달려 있습니다. - 올바른 방법은 외부 구현을 사용해야합니다.

+0

방금 ​​시도했는데 측면 추적기의 위치를 ​​이동 한 것으로 보이지만 센터에는 표시되지 않습니다. 약간 왼쪽 상단에 있습니다 – help

+0

차이가 있다면 내 응용 프로그램의 버튼 클릭으로 250 % 확대하고 있습니다. – help

+0

논리적 인 생각과 분석을 사용하고 예상되는 결과를 산출하기 위해 필요한 값을 조정하십시오. – Tatranskymedved

관련 문제