最好的选择

最好的选择

我有时希望光标显示为横跨整个屏幕的十字线(一条垂直线,一条水平线)。我需要它,因为我经常查看统计图,并且希望能够快速读取给定点的近似值。

有没有简单的方法可以实现这一点?

我当前的系统:Ubuntu 16.04 LTS,带有 Unity。

答案1

有一个类似问题几年前。

接受的答案有四项建议:

最好的选择

所有这四个建议都应该进行调查,但第三个建议带来了一个很有前途的应用程序:缩放选项对话框(通用访问)

缩放选项_XhairsTab.png

图 2.显示“十字线”选项卡的缩放选项对话框。

十字线开关

标有“十字线”的开关可切换十字线的显示。

与鼠标光标重叠

勾选“重叠鼠标光标”复选框后,十字线将与鼠标指针相交。取消勾选后,十字线将在与鼠标光标相交前结束。

厚度

厚度滑块决定十字线的宽度。范围是 1 到 100 像素。

长度

长度滑块决定十字准线的长度。范围从非常短到屏幕尺寸的几分之一,再到延伸到屏幕边缘的长度。

颜色

颜色按钮启动颜色选择器对话框来设置十字线的颜色和透明度。


分步说明

分步说明(使用Gnome 2.2) 由英国广播公司 (BBC) 撰写。

以下是该网站说明中的几张屏幕截图:

逆戟鲸 1.jpg

逆戟鲸2.jpg


Ubuntu Wiki 上有为 Unity 和 Gnome 桌面环境安装 Orca 的说明这里。 然而统一没有放大镜和十字准线的辅助技术功能。您必须使用 Gnome DE 才能使用这些功能。来源

缩放选项对话框是ÆGIS(安大略省)项目. 该项目由安大略省经济发展和创新部ÆGIS(欧洲)项目。您还可以访问这些网站以获取更多说明。

答案2

这不完全是您要求的,但您可以使用screenruler

这是一把可以在屏幕上移动的标尺,用于测量像素。您可以将其旋转 90°。

因此,这是一种“手动”方法,但您将得到您所要求的,能够在绘图上查找值,但要获得 x 和 y 值,您必须手动旋转标尺。

答案3

  1. 制作图像具有透明背景和十字准线,大小适合您的屏幕。
  2. 在您最喜欢的图像演示应用程序中打开它,或者可能display crosshair.pngsudo apt install imagemagickqiv -p YourImage.png显示是 ImageMagick 的一部分,安装它)。使用显示图像位于其他窗口上方。display可以工作,但效果不佳。
  3. 移动通过 Alt+LMB [鼠标左键] 单击图像的一部分(您可能需要在图像中制作一个手柄以使其更容易,对于我的图像,您必须单击实际的十字线本身。

现在,通过单击最大化窗口将图像置于前台;通过最小化隐藏图像。使用 Alt+鼠标移动图像。如果您得到棋盘确保你有 c,而不是透明度在 WM 中启用合成功能,并且您在启动时使用了 -p 标志qiv

图像:我的屏幕是 1650x1080,所以我应该使用 3301x2161 的图像,这样我在每个象限中都有一个全屏,由 1px 十字线分隔。(也许你想把它翻倍,并且有一个 3px 十字线来考虑抗锯齿;它可以是灰度的,文件大小应该压缩到几乎没有?)

我做了我的形象作为 96 dpi(我的屏幕分辨率)的 PNG,inkscape带有 3px 宽的十字线,不透明度为 80%。

对我来说很管用。你可以创建快捷方式打开图片(运行qiv -p /path/to/image)。您还可以添加像素比例用于测量。

正在使用:使用此方法在此条目上显示十字线

PNG 文件:我为这个答案制作的实际 PNG 文件

答案4

这是我一直想要的东西。这是我今天受这个问题启发后编写的一个实现(需要 Tcl/Tk):

#!/usr/bin/env wish

# Full-screen crosshairs

wm withdraw .

# We use four toplevels as line segments. The horizontal and vertical crosshairs are split to allow click-through.
toplevel .hlineL
toplevel .hlineR
toplevel .vlineT
toplevel .vlineB

set ::period 16 ;# polling period in milliseconds
set ::colour #7F7F7F

foreach line {.hlineL .hlineR .vlineT .vlineB} {
    wm overrideredirect $line 1
    wm attributes $line -topmost 1
    $line config -bg $::colour
}

proc every {ms body} {
    uplevel 1 $body
    after $ms [info level 0]
}

proc moveOffscreen {} {
    foreach line {.hlineL .hlineR .vlineT .vlineB} {
        wm geometry $line 0x0+-1+-1
    }
}

every $::period {
    lassign [winfo pointerxy .] x y
    
    # Handle being on another screen (-1,-1)
    if {$x == -1 || $y == -1} {
        moveOffscreen
    } else {
        # Note special handling of the (literal) edge cases of being at x=0 or y=0 (Tk will draw a pixel there otherwise):
        wm geometry .hlineL ${x}x1+[expr {$x <= 0 ? -1 : 0}]+${y}
        wm geometry .hlineR [expr {[winfo screenwidth .] - $x}]x1+[expr {$x + 1}]+${y}
            
        wm geometry .vlineT 1x${y}+${x}+[expr {$y <= 0 ? -1 : 0}]
        wm geometry .vlineB 1x[expr {[winfo screenheight .] - $y}]+${x}+[expr {$y + 1}]
    }
}

相关内容