В Windows Snipping Tool мне хотелось бы знать, как я могу использовать инструмент выделения для рисования прямых линий?
4 ответа
Инструмент для разрезания Windows не позволяет рисовать прямые линии нажатием Shift. Windows Ink Workspace
- это еще один инструмент, который поддерживает обрезку и рисование оторванной части. У него есть виртуальная линейка, которая помогает нам рисовать прямые линии.
Чтобы включить Windows Ink Workspace
Щелкните правой кнопкой мыши в любом месте панели задач и в контекстном меню выберите «Показать рабочую область чернил Windows». Значок ручки, написанной в форме буквы «S», появится в области уведомлений справа.
Чтобы запустить рабочее пространство, щелкните или коснитесь значка рабочей области Windows Ink Workspace в форме ручки, который появляется в области уведомлений.
Нажмите на блок "Эскиз экрана". Это будет третий блок в списке. Он автоматически сделает снимок экрана вашего дисплея и загрузит его для создания эскизов.
Перейдите к панели перо в правом верхнем углу экрана.
Выберите значок линейки. Это похоже на диагональную линейку.
Поместите мышь поверх линейки и используйте колесо прокрутки мыши, чтобы повернуть и расположить линейку.
Надеюсь это поможет.
Примечание. Эскиз экрана - это новая функция, доступная в годовом обновлении Windows 10
У пользователя 3DWizard есть хороший скрипт AutoHotKey, который я немного изменил, чтобы помочь мне решить эту проблему. Удерживайте Shift внутри окна Snipping Tool, чтобы ограничить движение мыши по горизонтали.
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
Ответ от @HaveSpacesuit не работал для меня в Windows 10.
Отпускание Shift не отпускало курсор.
Чтобы это исправить, измените третью строку со спины на:
Return Confine ? DllCall( "ClipCursor", UInt,&R ) : DllCall( "ClipCursor", UInt, 0 )
Весь рабочий код:
SendMode Input ; Recommended for new scripts due to its superior speed and reliability
SetTitleMatchMode 2 ; Allows for partial matches in window titles
CoordMode, Mouse, Screen
; Commands specific to when Snipping Tool is open
#IfWinActive, Snipping Tool
$*Shift::
Send {Shift Down}
MouseGetPos, SetX, SetY
ClipCursor( true, -10000, SetY, 10000, SetY+1 ) ;clip the cursor to a rectangle that consists just of a line in x-direction
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", UInt, 0 )
}
#IfWinActive
Я придумал очень низкотехнологичное решение для этого: MouseKeys!
Я просто настроил его так, чтобы при каждом отключении NumLock активировались MouseKeys. Затем я просто выравниваю курсор выделения, "нажимаю", нажимая NumPad-0, затем перемещаюсь вправо, используя NumPad-6. NumPad-5, по-видимому, последовательно "разжимается" в конце; У меня были смешанные результаты, снова нажимая NumPad-0.
Обратите внимание, что это решение "MouseKeys всегда включено", вероятно, удобно только на полной клавиатуре рабочего стола. Если у вас есть общий QWERTY/NumPad, вы можете использовать горячую клавишу MouseKeys вместо того, чтобы активировать / деактивировать.