Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2011, 19:40   #11
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

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

Почему же тогда так получается?
http://gyazo.com/2293d9a9804697b9dad3439efb77f4d4.png
kettanaito вне форума Ответить с цитированием
Старый 26.08.2011, 19:56   #12
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Что касается OnAdvancedDrawItem, то я Вам дал заготовку. По градиенту - предложил ссылку с достаточно простым алгоритмом, который только нужно слегка доработать, чтобы получить эффекты выпуклости/вогнутости. Что Вы хотите получить? Где верное, с Вашей точки зрения, изображение?
ReportCube вне форума Ответить с цитированием
Старый 26.08.2011, 20:06   #13
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

ReportCube, хочу понять свою ошибку, ведь рисует верно, но где-то идет сбой. Никак не могу понять где.
kettanaito вне форума Ответить с цитированием
Старый 26.08.2011, 20:39   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

см. пост 6, там приращение не правильно вычисляется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2011, 21:01   #15
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Сразу не обратил внимания. Абсолютно верно указано на ошибку: очерёдность выполнения математических операций (см. пост 6).
ReportCube вне форума Ответить с цитированием
Старый 26.08.2011, 21:31   #16
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Аватар, ReportCube, упустил из виду пост. Спасибо, там действительно нужны скобки. Градиент рисует отлично. Немного не могу правильно рассчитать какой отступ делать тексту и картинке слева от него (если item имеет множество родителей, соответственно отступ с каждым родительским элементом все больше и больше).

Замучил уже с этим вопросом, но не подскажите напоследок?
Вот, заново перерисовываю картинку и текст:
Код:
Sender.Canvas.TextOut(20,Arect.Top+4,Node.text);
 folderImages.Draw(Sender.Canvas,ARect.Left,ARect.Top+3,Node.ImageIndex);
// folderImages = TImageList;
Если бы градиент не перекрывал весь item, чтобы обойтись без перерисовки.
kettanaito вне форума Ответить с цитированием
Старый 26.08.2011, 21:44   #17
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Код:
Sender.Canvas.TextOut((Node.Level*20)+23,Arect.Top+4,Node.text);
folderImages.Draw(Sender.Canvas,(Node.Level*20)+(Node.Level+2),ARect.Top+3,Node.ImageIndex);
Хорошо отображает только при Level=1 (макс 2), дальше едет...

Последний раз редактировалось kettanaito; 26.08.2011 в 21:49.
kettanaito вне форума Ответить с цитированием
Старый 26.08.2011, 22:11   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А зачем вообще выделять градиентом по всей ширине тривью? Разве не достаточно текстовую область со пользовательским смайлом? Redt.Left не обнулять и все. И не надо его тогда для каждого узла вычислять. Тогда графику тривью не заденет. И в прорисовке текста и смайла зачем Top со смещением? Винда рисует их без смещения (если не ошибаюсь, ну максимум 1). Сделайте PrintScreen прорисовки винды и вашей, сохраните в файлы и Paint-е увеличив посмотрите разницу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2011, 22:18   #19
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Аватар, если не обнулять значение ARect.Left, то градиент рисует четко от начала текста узла, в этом Вы правы, но как же иконка справа? она тоже должна находится на фоне градиента, как и "пустая" часть, что образовалась слева при ARect.Left<>0.

http://gyazo.com/fcaee56298e077984e2d50c7791f978f.png
Белая часть слева раздражает. Даже убрав ее, остается фон самого TreeView. Да и текст все-равно приходится перерисовывать заново, т.к. градиент перекрывает его. И в перерисовке текста тоже нужно основываться на отступ слева...
kettanaito вне форума Ответить с цитированием
Старый 26.08.2011, 22:26   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Графику тривью вы убрали, тогда если раздражает, то нужно знать как винда это делает. Хотя бы посмотрев попиксельную ширину отступов, которая будет зависить от размеров фонта, мелкий шрифт или крупный и не помню, но вроде там у тривью свойства какаие-то есть с этим связанные. я в 18 посте писал как можно это посчитать в Painte хотя бы. А чтобы всетаки оставить белое слева можно везде Rect.Left уменьщить на 16 или что-то около этого
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.08.2011 в 22:29.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает написанная мною процедура градиент. ВНИМАНИЕ: МОЙ ПРЕКТ НАПИСАН С ИСПОЛЬЗОВАНИЕМ ALPHACONTROLS hjkdhgu Помощь студентам 0 09.06.2011 14:38
Прозрачный градиент - Фон не просто прозрачный, есть градиент - к верху он светлеет DrStrangeLove HTML и CSS 3 26.05.2011 00:44
градиент Naive HTML и CSS 1 14.12.2010 09:10
Градиент в OpenGL papos Помощь студентам 9 16.11.2010 00:27
Фон: ГРАДИЕНТ PAVEL315 HTML и CSS 2 13.03.2007 17:58