我想爲C#使用this plugin,這很好用。不過,在放大時,我很難將圖像置於中央。默認情況下,無論何時縮放,圖片框都會聚焦在左上角。我希望它專注於中心。如何居中圖片框
有什麼想法?我搜索了很多,並且找不到在這個插件中做這個的例子。
我想爲C#使用this plugin,這很好用。不過,在放大時,我很難將圖像置於中央。默認情況下,無論何時縮放,圖片框都會聚焦在左上角。我希望它專注於中心。如何居中圖片框
有什麼想法?我搜索了很多,並且找不到在這個插件中做這個的例子。
好吧,這越來越複雜,所以我會寫完整的答案:
這個插件是不是在路上,您可以在縮放事件掛鉤打開。 Actualy事情你可以做的(因爲你有開放源代碼)是在內部「破解」 - 更改源代碼並適應你的需求。
選項:
1.更改內實現:
獲取到文件ScalablePictureBoxImp.cs
,找到方法ScalePictureBoxToFit()
,並經過添加代碼行:
//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
- >一旦這個縮放變化,你將得到一個窗口的大小,並將滾動按鈕移動到中間位置。這可以以任何您需要的方式進行調整。
我相信,原創的作者只想寫ScalablePictureBoxImp
只是爲了測試/簡單的情況下添加包裝。如果你自己編寫或調整 - >正確的方式應該使用外部實現,那麼完全取決於你。
我剛剛嘗試過這一點,它似乎已經移動側追蹤器的位置,但不是中心。現在稍微在左上角 – help
如果它有所不同,我在應用程序中按下按鈕時放大了250% – help
請使用邏輯思維和分析,調整值以使它們產生預期結果。 – Tatranskymedved
你使用'WinForms'或'WPF'嗎? – Tatranskymedved
@Transranskymedved Winforms – help
從發佈的文章中,有2個選項:您可以下載原始源代碼並對其進行修改,因此您將自己將圖片居中。或者您可以爲函數縮放功能創建包裝。一旦按下按鈕,您將調用放大,然後將相機(圖片)移至正確的座標。 – Tatranskymedved