2017-01-23 7 views
0

this pluginをC#に使用しようとしていますが、これはうまくいきます。しかし、私はズームインするときにイメージを中央に置くのが難しいです。デフォルトでは、ズームするときに、画像ボックスは左上隅にフォーカスします。私は中心に焦点を当てたい。画像の中央に表示する方法

私は広範囲に検索しており、このプラグイン内でこれを行う例は見つかりません。

プラグインは、あなたがズームイベントにフックすることができる方法で開かれていない:

+0

あなたは 'WinForms'または' WPF'を使用していますか? – Tatranskymedved

+0

@Tatranskymedved Winforms – help

+0

投稿された記事から、2つのオプションがあります:元のソースコードをダウンロードして変更することができます。または、関数ズーム関数のラッパーを作成できます。ボタンが押されると、ズームインを呼び出し、カイナー(画像)を正しいコーディネーションに移動します。 – Tatranskymedved

答えて

1

[OK]を、これは私が完全な答えを書きますので、複雑化。現実的なこと(オープンソースを持っているように)は、内部を「ハックする」ことができます - ソースコードを変更してニーズに合わせて調整します。

オプション:

1.変更し、内部実装:

は、ScalablePictureBoxImp.csファイル方法ScalePictureBoxToFit()を見つけ、そして行の後にコードを追加するには、Get:

//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.変更外実装:

著者彼はイベントにフックされ、あなただけのラップされたオブジェクトを使用している内部実装のためのラッパーをウッシング(それは、マウスのボタンを押すことのようです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が呼び出されます - >このズームが変わると、ウィンドウのサイズが取得され、スクロールボタンが中央の位置に移動します。これはあなたが必要とする方法で調整することができます。

オリジナルのautorはScalablePictureBoxImpと書いたかったと思います。ラッパーはtest/simple caseの目的のためだけに追加されました。それはあなた自身にすべてを書いたり、調整したりするならばあなたに完全に任されます - 正しい方法は外部の実装を使用するべきです。

+0

私はこれを試したところ、サイドトラッカーの位置を移動したように見えますが、中心には移動していないようです。それは今左上隅の少し下にあります – help

+0

私のアプリケーションのボタンをクリックすると250%拡大します – help

+0

論理的な思考と分析を使用して、必要な値を調整して期待される結果が得られるようにしてください。 – Tatranskymedved

関連する問題