Как изменить горизонтальный курсор на вертикальный
Перейти к содержимому

Как изменить горизонтальный курсор на вертикальный

  • автор:

Почему курсор мыши кривой, а не симметричный

Favorite

В закладки

Почему курсор мыши кривой, а не симметричный

Шла третья неделя самоизоляции. Дело было то ли сегодня, то ли вчера, разницы никакой уже давно.

Сидел я за рабочим столом, смотрел в экран на курсор и о чём-то думал.

Или нет, я ни о чём не думал, просто смотрел на курсор. Тупил.

Курсор мне резко не понравился. Прямо выбесил.

Впервые за 28 лет жизни я и тысячи человек в интернете заметили: курсор мыши в операционных системах неровный и несимметричный. Неправильный, кривой!

Чёрт возьми, теперь это не развидеть.

Что не так с курсором в Windows и macOS

Вот почти от руки провёл линию. Теперь видите?

Курсоры операционных систем по умолчанию кривые. Так было в Windows 10, Vista, 95 – и точно так же было в Mac OS 20-летней давности.

Это можно и без линий заметить. Если читаете статью с компьютера, присмотритесь к курсору сейчас.

Странно всё это. Решил покопаться в вопросе и нашёл историю, почему так вышло.

Почему курсор в Windows и macOS кривой

Виды курсоров в ОС Xerox Star 8010

В 1981 году инженер Дуглас Эльгенбарт из XEROX изобрёл мышь. Курсор для неё изначально задумали прямым: вертикальной стрелкой, показывающей строго вверх.

Когда эту идею воплотили на разрабатываемом компьютере XEROX Alto, стало понятно: прямой курсор-стрелку тяжело выделить на фоне линий текстовой информации. Он совсем терялся.

Тогда Дуглас банально повернул пиктограмму курсора на 45 градусов. Левая сторона и правый край были сплющены до вертикальной и горизонтальной линии соответственно, чтобы очертания курсора выглядели чётче на дисплеях того времени с очень низким разрешением.

Финальная версия курсора XEROX.

Симметрия стрелки исчезла, но результат понравился всем.

Чуть позднее молодого Стива Джобса пригласили в исследовательский центр XEROX PARC, где он, скажем так, набирался идей. Курсор мыши для будущей Macintosh Operating System Джобс присмотрел именно там, с экрана XEROX Alto.

Через пару лет Билл Гейтс подсмотрел курсор мыши у Apple, когда Microsoft разрабатывала Windows 1.0. Бывает.

Вот и всё. Первый сделал, второй скопировал у первого, третий скопировал у второго. Так и прижилось.

P.S. Пока не определился, надо беситься на курсор дальше или всё, мир.

(58 голосов, общий рейтинг: 4.83 из 5)
�� Хочешь больше? Подпишись на наш Telegram.

Favorite

В закладки

Курсор

The cursor CSS property specifies the mouse cursor displayed when the mouse pointer is over an element.

Начальное значение auto
Применяется к все элементы
Наследуется да
Обработка значения как указано, но с абсолютными значениями url
Animation type discrete

Синтаксис

/* Применение ключевых значений */ cursor: pointer; cursor: auto; /* Использование URL и координат */ cursor: url(cursor1.png) 4 12, auto; cursor: url(cursor2.png) 2 2, pointer; /* Глобальные значения */ cursor: inherit; cursor: initial; cursor: unset; 

Значения

Ссылка или разделённый запятыми список ссылок: url(…), url(…), … , указывающие на файл изображения. Дополнительные ссылки могут быть предоставлены в качестве запасных значений, на случай если изображение по основной ссылке не поддерживается в качестве курсора. Запасное значение, не являющееся ссылкой (одно или несколько ключевых слов) должно находиться в конце списка значений. See Using URL values for the cursor property for more details.

Необязательные значения х- и у- координат. Два безразмерных неотрицательных числа меньше 32.

Наведите курсор на картинку, чтобы увидеть пример в действии:

Указывает на возможность перемещения объекта.

Приближение или уменьшение.

Указывает на возможность схватить и переместить объект.

Формальный синтаксис

cursor =
[ (en-US) [ (en-US) | (en-US) ] (en-US) [ (en-US) ] (en-US) ? (en-US) ] (en-US) # (en-US) ? (en-US) [ (en-US) auto | (en-US) default | (en-US) none | (en-US) context-menu | (en-US) help | (en-US) pointer | (en-US) progress | (en-US) wait | (en-US) cell | (en-US) crosshair | (en-US) text | (en-US) vertical-text | (en-US) alias | (en-US) copy | (en-US) move | (en-US) no-drop | (en-US) not-allowed | (en-US) grab | (en-US) grabbing | (en-US) e-resize | (en-US) n-resize | (en-US) ne-resize | (en-US) nw-resize | (en-US) s-resize | (en-US) se-resize | (en-US) sw-resize | (en-US) w-resize | (en-US) ew-resize | (en-US) ns-resize | (en-US) nesw-resize | (en-US) nwse-resize | (en-US) col-resize | (en-US) row-resize | (en-US) all-scroll | (en-US) zoom-in | (en-US) zoom-out ] (en-US)

=
url( (en-US) * (en-US) ) | (en-US)
src( (en-US) * (en-US) )

Примеры

.foo  cursor: crosshair; > /* use prefixed-value if "zoom-in" isn't supported */ .bar  cursor: -webkit-zoom-in; cursor: zoom-in; > /* standard cursor value as fallback for url() must be provided (doesn't work without) */ .baz  cursor: url(hyper.cur), auto; > 

Спецификации

Specification
CSS Basic User Interface Module Level 4
# cursor

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Using URL values for the cursor property
  • pointer-events
  • Cursor Property (MSDN)

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 7 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

Динамическое изменение состояния курсора

Есть такая интересная WindowsAPI-функция — setSystemCursor. У нее есть два параметра.

□ Курсор, который надо изменить. Чтобы указать на системный курсор, МОЖНО ИСПОЛЬЗОВАТЬ ФУНКЦИЮ GetCursor.

Вид системного курсора, который нужно установить. Здесь можно указать одно из следующих значений:

• ocr_NORMAL — нормальный курсор в виде стрелки;

• ocr_ibeam — курсор, используемый для выделения текста;

• ocr_wait — большие песочные часы;

• ocr__up — стрелка вверх;

• OCRSIZE — курсор изменения размера;

• ocr__sizewe — курсор горизонтального изменения размера;

• OCR_sizens — курсор вертикального изменения размера;

• ocr_sizeall — курсор горизонтального и вертикального изменения размера;

• ocr__sizeno — интернациональный несимвольный курсор;

• ocr_appstarting — маленькие песочные часы со стрелкой.

И сразу же небольшой пример изменения текущего вида указателя мыши:

procedure TForml.ButtonlClick(Sender: TObject);

Вопрос: Можно ли рандомно менять вид системного курсора, чтобы в течение определенного времени курсор последовательно принимал все перечисленные значения?

Rabid Coyote
Посмотреть профиль
Отправить персональное сообщение для Rabid Coyote
Отправить Email для Rabid Coyote
Найти все сообщения от Rabid Coyote

31.12.2012, 17:32
Профессионал
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Вы сказали Спасибо: 52
Поблагодарили 346 раз(а) в 319 сообщениях
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
Можно. В чем проблема?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
31.12.2012, 18:30
Регистрация: 08.06.2012
Сообщения: 32
Вы сказали Спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Версия Delphi: 10 Lite, 2007
Репутация: 10
Сообщение от Bargest
Можно. В чем проблема?

проблема в том, что у меня не получается. )))

попробовал вот так:

procedure TForm1.Button1Click(Sender: TObject); begin repeat randomize; setSystemCursor(GetCursor, ocr_cross); setSystemCursor(GetCursor, ocr_wait) setSystemCursor(GetCursor, ocr_up); setSystemCursor(GetCursor, ocr_normal); until true; end; end.;

lmikle: пользуемся правильными тегами!

но может быть, можно лучше? ))

Последний раз редактировалось lmikle, 01.01.2013 в 12:21 .

Rabid Coyote
Посмотреть профиль
Отправить персональное сообщение для Rabid Coyote
Отправить Email для Rabid Coyote
Найти все сообщения от Rabid Coyote

31.12.2012, 22:11
Профессионал
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Вы сказали Спасибо: 52
Поблагодарили 346 раз(а) в 319 сообщениях
Версия Delphi: XE3/VS12/FASM
Репутация: 14665

Во-первых, рандомайз внутри цикла лишен смысла. Он делается один раз при старте программы. Далее используется рандом. Во-вторых, рандомности в коде нет. Как вариант, сделать массив из всех возможных значений курсоров, в цикле брать рандом от размера этого массива и юзать полученное число как индекс курсора в массиве. Вариант 2 — посмотреть, чему соответствуют эти константы курсоров. Это будут числа, и скорее всего они будут по порядку. Поэтому можно брать рандом сразу от них. Ну и в цикле надо делать ожидание, иначе курсоры будут мигать с огромной скоростью и сольются в марево.

__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *