/// <summary> /// Constructor</summary> /// <param name="transformAdapter">Transform adapter</param> /// <param name="canvasAdapter">Canvas adapter</param> public ScrollbarAdapter(ITransformAdapter transformAdapter, ICanvasAdapter canvasAdapter) { m_transformAdapter = transformAdapter; m_transformAdapter.TransformChanged += transformAdapter_TransformChanged; m_canvasAdapter = canvasAdapter; m_canvasAdapter.BoundsChanged += canvasAdapter_BoundsChanged; m_canvasAdapter.WindowBoundsChanged += canvasAdapter_WindowBoundsChanged; m_vScrollBar = new VScrollBar(); m_vScrollBar.Dock = DockStyle.Right; m_vScrollBar.ValueChanged += vScrollBar_ValueChanged; m_hScrollBar = new HScrollBar(); m_hScrollBar.Dock = DockStyle.Bottom; m_hScrollBar.ValueChanged += hScrollBar_ValueChanged; }
private void SetCanvasBounds() { // update the control CanvasAdapter's bounds if (m_control != null && m_control.Visible) { Rectangle bounds = GetBounds(); ITransformAdapter transformAdapter = m_control.As <ITransformAdapter>(); bounds = GdiUtil.InverseTransform(transformAdapter.Transform, bounds); // make canvas twice as large as it needs to be to give the user some room, // or at least as large as the control's client area. Rectangle clientRect = m_control.ClientRectangle; bounds.Width = Math.Max(bounds.Width * 2, clientRect.Width); bounds.Height = Math.Max(bounds.Height * 2, clientRect.Height); ICanvasAdapter canvasAdapter = m_control.As <ICanvasAdapter>(); canvasAdapter.Bounds = new Rectangle(0, 0, bounds.Right, bounds.Bottom); } }