Как каждый воспроизводит стиль текста вставки при рисовании текста с Какао Mac OS X?

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

((Action)M)(() => throw new Exception());

Что нужно испечь лапшу [111 ] любых программистов обслуживания, которые придут, и они оставят это в покое. Посмотрим, сможете ли вы выяснить, почему это работает.

5
задан Rowan 1 February 2009 в 07:17
поделиться

2 ответа

Если Вы захотите, чтобы это выглядело прекрасным, то необходимо будет нарисовать текст дважды.

Как Вы видите при увеличивании масштаб маркировок ниже объектов панели инструментов в любом приложении или например панели закладок в Safari (Control+scroll, control+option +\для переключения сглаживания увеличенного изображение), текст представляется с субпиксельным сглаживанием, по крайней мере, когда "Стиль сглаживания шрифта": в "Появлении" установки системы установлены на носитель, которым это будет по умолчанию на Mac со встроенным или внешним плоскопанельным дисплеем Apple.

NSShadow не может использоваться с субпиксельным сглаживанием, поэтому при простой установке NSShadowAttributeName в словаре атрибутов, Вы тянете свою строку с, Вы заметите, что субпиксельным сглаживанием является MIA, когда Вы увеличиваете масштаб своего представленного текста. Из-за пути NSShadow разработан, независимо от того, что окрашивает Вас, устанавливает Ваш экземпляр NSShadow на — даже если это будет непрозрачно, то — он будет всегда оттягиваться с альфа-каналом, делая субпиксель, сглаживающийся невозможный.

Решение действительно очень просто:

  1. Нарисуйте свой текст однажды с белым цветом с некоторой прозрачностью,
  2. Затем потяните его еще раз вдобавок ко всему, пиксель выше в оттенке серого Вашей симпатии без прозрачности.

Ваша 'тень' потянет без субпиксельного сглаживания, но фактический текст на вершине op его потянет с ним, давая Вам тот же самый эффект, как стандартный объект кнопки на панели инструментов Cocoa маркирует, или объекты в Safari отмечают панель.

Править: Кажется, что объекты панели закладок Safari тянут свои 'тени' с субпиксельной точностью также, таким образом, способ, которым они сделали это, вероятно, путем выбора непрозрачного оттенка серого для белого 'теневого' текста также; недостаток того подхода: Вы связываете свой код для прорисовки, чтобы только работать хорошо над конкретным цветом фона, например, если Ваши элементы будут использоваться на синем фоне, Вы захотите выбрать тот цвет к легкому оттенку синего цвета, для появления как он - полупрозрачный белый.

7
ответ дан 13 December 2019 в 22:18
поделиться

Потяните его с нетенью ниже его. Используйте тень с цветным белым, непрозрачность приблизительно 50%, размойте 0, сместите 1 ПБ вниз.

Простой способ сделать это должно просто нарисовать текст дважды. В первый раз Вы тянете его на 1 ПБ ниже, в белом, в 50%-й непрозрачности. Во второй раз Вы тянете его в желаемом положении, в требуемом цвете, в желаемом (вероятно, 100%) непрозрачность.

3
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: