|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сглаживание на "канве" в Delphi
Всем доброго времени суток. Прошу помощи по вот такому вопросу:
Решил сделать небольшой календарик, на форму положил StringGrid и в ячейках вывожу числа. На фоне чисел в каждой ячейке хотел сделать круг OnDrawCell делаю так: Код:
with Calendar.Canvas do begin R:=Rect; R.Top:=R.Top+5; R.Left:=R.Left+5; R.Bottom:=r.Bottom-5; R.Right:=r.Right-5; Pen.Color:=clHotLight; Brush.Color:=clHotLight; Ellipse(R); end; Все, в принципе получается, но корявенько как-то. Пробовал применить сглаживание как в этом примере , но тоже не фонтан, плюс очень медленно все отрисовывается... Подскажите пожалуйста может есть какие-то другие способы нормально сгладить то что нарисовано на канве? Для написания использую Delphi 7. |
#2
|
||||
|
||||
Самый наипростейший вариант - цифры картинками с уже заданным сглаживанием сделать, поместить в ImageList и выводить из него.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Dagmanor (22.10.2013)
|
#3
|
|||
|
|||
Согласен, картинки в ImageList-е могут помочь, но все равно тема интересная. Хочется сделать именно сглаживанием.
Для наглядности покажу как получается Последний раз редактировалось M.A.D.M.A.N., 22.10.2013 в 16:50. |
#4
|
||||
|
||||
Не открывается картинка, залей на fastpic.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
|
#6
|
||||
|
||||
Посмотри здесь:
http://delphiworld.narod.ru/base/gau...ls_shadow.html — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Dagmanor (22.10.2013)
|
#7
|
|||
|
|||
Спасибо за помощь. Буду наверное использовать Гауссовское размытие.
|
#8
|
||||
|
||||
Вечером поищу более простой вариант размытия.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Dagmanor (25.10.2013)
|
#9
|
||||
|
||||
Если устроит такое качество - выложу код. http://zalil.ru/34788775
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
Dagmanor (25.10.2013)
|
#10
|
|||
|
|||
Цитата:
|
#11
|
||||
|
||||
имхо, лучше чтобы еще края были полупрозрачными, чтобы на любом цвете фона было красиво.
Пишу программы за еду. __________________ |
#12
|
||||
|
||||
Алгоритм простой:
1. Исходная картинка увеличивается в N раз (мне хватило 3, выше результат не сильно заметен). 2. На увеличенной картинке рисуем что надо с увеличением в N раз. 3. Уменьшаем полученную картинку в N раз, беря среднее значение цвета пикселей каждого квадрата NxN. Код попозже вытяну из программы (много лишнего в процедуре). Но тут на DS есть исходник реализующий данный алгоритм. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
Dagmanor (25.10.2013)
|
#13
|
|||
|
|||
Спасибо большое за ответы. Приятно когда людям не "в лом" помочь, но разобрался уже сам. Реализовал с помощью GDI+.
|