Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于缩放设置wpf中滚动条的拇指大小_Wpf_Canvas_Scrollbar - Fatal编程技术网

基于缩放设置wpf中滚动条的拇指大小

基于缩放设置wpf中滚动条的拇指大小,wpf,canvas,scrollbar,Wpf,Canvas,Scrollbar,在我的图形应用程序中,画布区域有一些图形。与x-cordinate和y-cordinate关联的滚动条必须与画布的此视口区域(图形所在的位置)同步。 当用户单击缩放按钮时,图形将被放大和缩小。现在的问题是设置此缩放的滚动条。放大或缩小时,滚动条的视口应与缩放百分比同步 在这种情况下,如何设置滚动条的拇指大小。 我有滚动条的最大值、最小值和值属性 以及使用zoomfactor的整个图形的宽度和高度 如何设置滚动条的视口大小或拇指大小 我使用了下面的代码片段来获取ViewportSize,但它并不准

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

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

如何设置滚动条的视口大小或拇指大小

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

mScrollBarY.ViewportSize = (double)yAxis.CurrentValueRange;

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

这里我看到两种方法:

  • 视口保持不变,而范围随着放大而增大,随着缩小而减小为视口大小。因此,您需要更新最大值
  • “范围”保持不变,而“视口”在缩小时增大到范围大小,在放大时减小
  • 编辑

    在这两种变体中,您都需要定义一些要增加或减少的因子。设为比例系数。下面是更新滚动条的方法:

    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();
    
    顺便说一下,我在网站上找到了以下公式:


    难道你不能通过将a应用到画布并将其放入a中来自动处理所有这些吗?我不知道如何将最小值和ViewportSize设置为相同的值。
    ThumbSize = TrackLength * ViewportSize / (Maximum - Minimum + ViewportSize)