【问题标题】:Setting the thumb size of scrollbar in wpf based on the Zooming基于缩放设置wpf中滚动条的拇指大小
【发布时间】:2012-04-16 02:10:17
【问题描述】:

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

在这种情况下如何设置滚动条的拇指大小。 我有滚动条的 MaximumMinimumValue 属性 以及带有缩放因子的整个图形的宽度和高度。

我应该如何设置滚动条的ViewportSize或拇指大小?

我使用下面的代码 sn-p 来获取 ViewportSize 但它不准确

mScrollBarY.ViewportSize = (double)yAxis.CurrentValueRange;

CurrentValueRange 给出放大后的可见范围。

【问题讨论】:

标签: wpf canvas scrollbar


【解决方案1】:

这里我看到了两种方法:

  1. 视口保持不变,而 Extent 会随着您的放大而增大,并随着您的缩小而减小到视口的大小。所以你需要更新Maximum
  2. Extent 保持不变,而 Viewport 会在您缩小时增大到 Extent 大小,并在您放大时减小。

编辑

在这两种变体中,您都需要定义一些要增加或减少的因素。让它成为 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)

【讨论】:

  • 我不明白我们如何将 Minimum 和 ViewportSize 设置为相同的值。
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 2013-04-28
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多