根据缩放设置wpf中滚动条的拇指大小

时间:2012-04-02 12:02:37

标签: wpf canvas scrollbar

在我的图形应用程序中,画布区域有一些图形。与x-cordinate和y-cordinate关联的滚动条必须与画布的此视口区域同步(图形存在的位置)。 当用户点击缩放按钮时,图表会放大和缩小。现在问题是为此缩放设置滚动条。在放大或缩小时,滚动条的视口应与缩放百分比同步。

在这种情况下如何设置滚动条的拇指大小。 我有滚动条的最高最低属性 以及zoomfactor的整个图形宽度和高度。

如何设置 ViewportSize 或滚动条的缩略图大小?

我使用下面的代码片段来获取ViewportSize但不准确

mScrollBarY.ViewportSize = (double)yAxis.CurrentValueRange;

其中 CurrentValueRange 给出放大的可见范围。

1 个答案:

答案 0 :(得分:3)

在这里,我看到两种方法:

  1. Viewport保持相同,而Extent在您放大时增长,在缩小时减少到Viewport大小。因此,您需要更新最高
  2. 范围保持不变,而Viewport在缩小时增长到范围大小,在放大时减小。
  3. 修改

    在两种变体中,您需要定义一些因子来增加或减少。设为 scale_factor 。以下是更新ScrollBar的方法:

    void updateScrollBar()
    {
        scrollBar.Minimum = 0;
        scrollBar.Maximum = extent;
        scrollBar.ViewportSize = viewport * scale_factor;
        scrollBar.SmallChange = 10 * scale_factor;
    }
    

    放大处理程序:

    scale_factor /= 2;
    updateScrollBar();
    

    缩小处理程序:

    scale_factor *= 2;
    updateScrollBar();
    

    顺便说一句,我在msdn forum找到了以下公式:

    ThumbSize = TrackLength * ViewportSize / (Maximum - Minimum + ViewportSize)