Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Создание СГЛАЖЕННОЙ круглой формы.
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 августа 2006 12:13
· Личное сообщение · #1

Хочу создать приложение, окно которого в общем-то будет состоять только из одной круглой кнопки, меняющей только свой цвет.

Размер кнопки 42*42 пикселя. Я подгружаю изображение, где на белом фоне есть эта кнопка. Потом применял функцию CreateEllipticRgn, но она делает обрезку слишком ломаную, т.е. на кнопке остаются видны фрагменты белого фона. Я так понял, что ломаная она из-за малого радиуса моей кнопки, т.к. на бОльших объектах "ломаность" уже не заметна. Потом пробовал делать обрезку вручную, используя CreateRectRgn и CombineRgn, но толком ничего так и не добился - то с одного края были остатки белого фона, то с другого.

Подскажите, как достигнуть желаемого результата?

P.S. Если кто видел заставку при загрузке CorelDraw 12, то там видно, что она очень качественно сглажена. Это я так, к примеру.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 04 августа 2006 13:15
· Личное сообщение · #2

IT_Prof пишет:
CreateEllipticRgn, но она делает обрезку слишком ломаную, т.е. на кнопке остаются видны фрагменты белого фона.

Ну так, по хорошему, на границе надо делать пиксели промежуточного цвета между окружающим фоном и кнопкой. Проще всего сделать границу из полупрозрачных пикселей, но тогда придется юзать API соответствующие.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 августа 2006 15:24
· Личное сообщение · #3

tundra37 пишет:
Ну так, по хорошему, на границе надо делать пиксели промежуточного цвета между окружающим фоном и кнопкой.


Так и сделал, все получилось.

Спасибо.


 eXeL@B —› Программирование —› Создание СГЛАЖЕННОЙ круглой формы.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати