Гладкие края непрямоугольной формы в .NET - PullRequest
7 голосов
/ 18 января 2011

Я создал форму с закругленными углами, используя Form.Region. Это работает, но, к сожалению, округление выглядит грубым. Есть ли какие-нибудь хитрости для сглаживания таких углов формы? Я знаю, что многие приложения поддерживают это, но не знаю, как это сделать в .NET.

Спасибо, ребята.

Ответы [ 2 ]

8 голосов
/ 18 января 2011

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

Лучше всего сделать так, чтобы радиус угла был небольшим, чтобы он не был так заметен.Также используйте такой инструмент, как SysInternals 'ZoomIt, и внимательно посмотрите на закругленные углы программы, такой как Windows Media Player.Обратите внимание на серые тона, которые он использует для рисования границы.

5 голосов
/ 18 января 2011

Из того, что я читал в Интернете, большинство людей заканчивают тем, что переопределяли событие onpaint форм и рисовали там регион. Это позволяет им использовать GDI + с сглаживанием и сделать его более чистым.

Примеры, которые я нашел:

http://netcode.ru/dotnet/?lang=&katID=30&skatID=283&artID=7833 http://www.xtremevbtalk.com/showthread.php?t=288178

...