Здравствуйте, Vladek, Вы писали:
V>Здравствуйте, HotDog, Вы писали:
HD>>Как измерить размер элемента вместе с тенью?
V>Давайте начнём издалека. Зачем?
Надо сохранить изображение в виде битмапа (Png). Добавлять по краям Х пикселей в надежде, что тень туда попадет не предлагать. Т.к. рамеры шрифта и параметры тень варьируются.
Re[3]: WPF: Ка получить размеры UIElement с эффектами
Здравствуйте, HotDog, Вы писали:
HD>Надо сохранить изображение в виде битмапа (Png). Добавлять по краям Х пикселей в надежде, что тень туда попадет не предлагать. Т.к. рамеры шрифта и параметры тень варьируются.
Ну варьируются и ладно. Размер текста всегда можно подсчитать через FormattedText, а тень имеет вполне конкретные настройки, которые можно учесть.
Re[4]: WPF: Ка получить размеры UIElement с эффектами
Здравствуйте, MxMsk, Вы писали:
MM> Ну варьируются и ладно. Размер текста всегда можно подсчитать через FormattedText, а тень имеет вполне конкретные настройки, которые можно учесть.
Ну т.е. WPF может все правильно отобразить, а вот вернуть нам информацию о том где и как это будет сделано — никак?
Старая сказка про "... и повернулась избушка к лесу передом а к нам задом" на новый лад
Здравствуйте, HotDog, Вы писали:
HD>Надо сохранить изображение в виде битмапа (Png). Добавлять по краям Х пикселей в надежде, что тень туда попадет не предлагать. Т.к. рамеры шрифта и параметры тень варьируются.
Здравствуйте, Sinix, Вы писали:
S> Да. Осталось всего-то расставить padding'и.
В том то все и дело, что WPF уже имеет информацию о примененном эффекте (иначе бы оно неверно отображалось на "канвасе"), но вот получить эту информацию (bounding box) нет возможности.
Можно конечно и вручную солнце "закатить" — посчитать размер блюра на основании радиуса и смещения тени, учесть размер фонта и т.д. Но это все частный случай. Каким образом прикажете мне все это высчитывать, если на текст или произвольный UIElement навесят шейдерный эффект, который делает неизвестно что?
Здравствуйте, HotDog, Вы писали:
HD>Ну т.е. WPF может все правильно отобразить, а вот вернуть нам информацию о том где и как это будет сделано — никак? HD>Старая сказка про "... и повернулась избушка к лесу передом а к нам задом" на новый лад
Сможешь рассказать, как рассчитать место, которое займет произвольный пользовательский шейдерный эффект?
Re[6]: WPF: Ка получить размеры UIElement с эффектами
Здравствуйте, HotDog, Вы писали:
MM>> Сможешь рассказать, как рассчитать место, которое займет произвольный пользовательский шейдерный эффект? HD>WPF отображает эффект, значит он "знает" по меньшей мере его конечные размеры. Верно?
Не знаю. Припоминаю какое-то обсуждение на MSDN, где разработчик WPF писал, что с эффектами не все просто. Например, их нельзя использовать в DrawingContext.
Однако, на удивление, изучение Рефлектором кода показало, что в классе Effect есть internal метод GetRenderBounds. Через рефлексию его можно дернуть.
Re[8]: WPF: Ка получить размеры UIElement с эффектами
Здравствуйте, MxMsk, Вы писали:
MM> Однако, на удивление, изучение Рефлектором кода показало, что в классе Effect есть internal метод GetRenderBounds. Через рефлексию его можно дернуть.
Попробую добраться до этого GetRenderBounds и глянуть, что он возвращает. Но это опять таки костыль, который может отвалиться после первого же апдейта