![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
На днях начал изучать WPF. Вот столкнулся с непонятностью. Беру Image, DrawingVisual и RenderTargetBitmap. Битмап задаю источником в Image и рендерю в него фон и прямоугольник с рамкой. Далее я хочу стереть прямоугольник и рисую такой же, но цветом фона. Полупрозрачная рамка остаётся. Эта рамка за пределами моего прямоугольника. Image имеет свойство Stretch равное None.
Код
Вот такой результат после стирания имеем ![]() Вопрос, какого как сделать, чтобы было хорошо? Это сообщение отредактировал(а) Cheloveck - 8.3.2011, 22:24 -------------------- ![]() |
||||
|
|||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Линии в WPF это не просто закрашенные пикселы в единицу толщиной. В WPF используется сабпиксельная прорисовка, которая слева, справа, сверху и снизу линии рисует еще антиалиасинговые пикселы. Думаю именно они и остаются после "стирания". Запустите экранную лупу и внимательно исследуйте это место, скорее всего именно это вы и заметите.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
-Mikle-, именно про них я и говорю. Вопрос не в том, что это, а как от этого избавиться?
-------------------- ![]() |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Рисуйте фон, а не линию с цветом фона.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
exBlender |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 2.10.2009 Репутация: 9 Всего: 9 |
Если хотите делать по-хорошему, сначала из кода переместите всю визуализацию в xaml. Это может выглядеть примерно так:
Кодом только меняете один стиль Border'a на другой. --------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт. |
||||
|
|||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
exBlender, мне показалось, что человек изучает возможности програмной отрисовки. Редкая нужда конечно, но знать и понимать ее стоит.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
exBlender,
Мне нужно динамически рисовать такие квадратики в количестве n, заранее неизвестных, штук. Создавать для каждого объект - расточительство ресурсов, как со стороны выделения памяти, так и со стороны контроля за всеми объектами. Это сообщение отредактировал(а) Cheloveck - 9.3.2011, 19:24 -------------------- ![]() |
|||
|
||||
exBlender |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 2.10.2009 Репутация: 9 Всего: 9 |
Спорить не буду.
Но хозяйке на заметку: В реальной жизни тормоза обычно возникают при загрузке из базы данных, а не из-за использования бордеров. Разделение кода и визуала - краеугольный камень WPF. Я сижу на довольно большом проекте, где пробовали многих программистов и всех, кто не очень четко работал с MVVM и не выносил визуал из кода, убрали. --------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт. |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Вы хоть в курс дела введите, вам это надо для практических целей или ради учебных целей? Для практических, я вам тоже не рекомендую заниматься ручной работой. А расточительство памяти решается в два счета разными способами. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Для учебных. Как бы ни было лучше, это делаться тоже должно. Иначе это не фреймворк, а ***** какая-то. -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |