Windows snipping tool highlight straight
Solution 1:
Windows snipping tool doesn't have any way to let us draw straight lines by pressing Shift. Windows Ink Workspace
is another tool that supports snipping and drawing the snipped portion. It has a virtual ruler that helps us to draw straight lines.
To enable Windows Ink Workspace
Right-click anywhere on the taskbar and from the context menu select Show Windows Ink Workspace button. An icon of a pen writing in an “S” shape will appear in the notifications area to the far right.
To launch the workspace, click or tap the pen-shaped Windows Ink Workspace icon that appears in your notification area.
Tap the "Screen sketch" block. It will be the third block in the list. It will automatically take a screenshot of your display and load it for your sketching.
Navigate to the pen bar at the top right of the screen.
Select the ruler icon. This looks like a diagonal ruler.
Place the mouse on top of the ruler and use mouse scroll wheel to rotate and position the ruler.
Use the pen to draw a highlighted line above the ruler, this line will automatically be aligned to the direction and position of the ruler.
Sample Sketch
Hope this helps.
Note: Screen Sketch is a new feature available in the Windows 10 Anniversary Update
Solution 2:
User 3DWizard has a nice AutoHotKey script which I slightly modified to helped me solve this problem. Hold Shift inside the Snipping Tool window to restrict the mouse to horizontal movement.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability
SetTitleMatchMode 2 ; Allows for partial matches in window titles
; Commands specific to when Snipping Tool is open
#IfWinActive, Snipping Tool
$*Shift::
Send {Shift Down}
CoordMode, Mouse, Screen
MouseGetPos, SetX, SetY
; clip the cursor to a rectangle that consists just of a line in x-direction
ClipCursor(true, -1000000, SetY, 1000000, SetY+1)
KeyWait Shift
return
$*Shift Up::
Send {Shift Up}
ClipCursor(false, 0, 0, 0, 0) ; unclip the cursor
return
ClipCursor(Confine=True, x1=0 , y1=0, x2=1, y2=1)
{
VarSetCapacity(R, 16, 0), NumPut(x1, &R+0), NumPut(y1, &R+4), NumPut(x2, &R+8), NumPut(y2, &R+12)
Return Confine ? DllCall("ClipCursor", UInt, &R) : DllCall("ClipCursor")
}
#IfWinActive