BCB同步捲軸

在影像處理的程式中,我時常會為了作兩種效果的比較,理所當然的將程式介面弄成左右兩個影像,雖然在處理小影像時,擺放足夠顯示的Image就足夠了,但是當要觀察的圖片太大時,便需要用ScrollBox來顯示大於規劃範圍的影像,然而轉動左邊或是右邊的ScrollBox,另一邊的影像卻不會動作,這對於觀察處理的效果實在是很不便利,因此我就需要加入同步捲軸。

一開始,我在程式介面中了擺置了兩個TScrollBox,分別為ScrollBox1與ScrollBox2。而我要這兩個ScrollBox能夠同步移動捲軸,就分別點這兩個物件的Events裡面的 CanResize ,並貼上下面的的程式碼。


TScrollBox* S = dynamic_cast<TScrollBox*>(Sender);
// 轉型, 避免產生Exception

if (S!=NULL)
{
int H = S->HorzScrollBar->Position;
int V = S->VertScrollBar->Position;

if (H != ScrollBox1->HorzScrollBar->Position)
ScrollBox1->HorzScrollBar->Position = H;
if (V != ScrollBox1->VertScrollBar->Position)
ScrollBox1->VertScrollBar->Position = V;

if (H != ScrollBox2->HorzScrollBar->Position)
ScrollBox2->HorzScrollBar->Position = H;
if (V != ScrollBox2->VertScrollBar->Position)
ScrollBox2->VertScrollBar->Position = V;
}


設定完後,只要任一個ScrollBox捲動時觸發CanResize,就會使上面的程式碼去取得使用者捲動後的ScrollBox水平與垂直軸位置,將這個位置資訊設定給還不是這個位置的ScrollBox。

如此一來,就能達成捲軸同步的功能囉!

留言