вторник, 6 сентября 2011 г.


   Сегодня рассмотрим тему окон нестандартной формы.
   Если бегло погуглить этот вопрос (с ориентацией на .NET), то можно остановиться на трёх достаточно интересных вещах:
  Очень познавательная статья! Используя данных подход можно получить фигурные окна с тенями и т.п. Если VB .NET не ваш любимый язык, то может помочь: http://www.developerfusion.com/tools/convert/vb-to-csharp/

  Ну уж очень простое решение.

  Вот этот вариант меня привлёк легкостью реализации. НО! Возник ряд интересных моментов, которые мы посмотрим ниже.

   Непосредственно сам проект лежит здесь: http://ifolder.ru/25589879
   С первого взгляда всё вроде бы хорошо, окошко выглядит интересно и симпатично.

  Но дальнейшее использование такого окна приводит к довольно некрасивым эффектам.
  Например, если задний фон тёмный (консоль), то появляется белый «налёт» на границе окна.

  Если на картинку, используемую в качестве BackgroundImage, посмотреть с увеличением, то можно увидеть, что край картинки имеет небольшую размытость, что и приводит к эффекту белого цвета вокруг окна.

  Если убрать эту размытость (на рисунке представлены чёткие границы):

  То получится довольно сносное решение (область, обведённая зелёным эллипсом):
    Конечно, есть WPF, который позволит решить данную задачу проще, но если использовать .NET 2.0 и Window Forms, то подход приведённый выше IMHO можно считать рабочим. Или опускаться на более глубокий уровень (ссылка 1). ИЛИ, использовать C++, а там уж точно придётся работать на глубине))).

Спасибо за внимание ;)

Комментариев нет:

Отправить комментарий