Нарисуйте текст на .net Control с отрицательным цветом фона - blend - PullRequest
5 голосов
/ 06 апреля 2010

Я хотел бы нарисовать индикатор с процентами в центре, но я бы хотел, чтобы текст имел отрицательный (контрастный) цвет фона .

Таким образом, часть текста, которая находится над заполненной частью ProgressBar, будет белой, а часть поверх незаполненной части будет белой.

Я мог бы сделать это просто, "обманывая"

  • сначала рисует черный фрагмент текста
  • нарисовать прямоугольник прогресса (он будет покрывать часть, которая будет скрыта)
  • закрашивание белого текста только по прямоугольнику прогресса (обрезая его)

Влияние приложения на рисование текста дважды незначительно в этом приложении, но мне интересно, есть ли какой-нибудь простой способ сделать это только в два этапа (например, с помощью индикатора выполнения каким-то образом инвертировать уже нарисованный текст) с помощью * * смешивание тысячи двадцать пять . * +1027 *

Ответы [ 2 ]

4 голосов
/ 06 апреля 2010

То, что вы делаете, прекрасно. Старые приемы, такие как SetROP2 (), больше не работают с сглаживанием текста, особенно при рендеринге ClearType Получение псевдонимов пикселей с неправильным цветом очень заметно. Соответственно, Graphics.CompositingMode больше не поддерживает эффекты.

0 голосов
/ 06 апреля 2010

Вы можете использовать XOR для вычисления отрицательного (инвертированного) цвета;

Public Function InvertColor(color As Long) As Long
    Return (color Xor &HFFFFFF)
End Function
...