2013-05-23 2 views
1

Я пытаюсь найти лучший способ рисовать прямоугольники над изображением в wpf. Когда пользователь щелкает где-нибудь в миниатюрном изображении, регион, который пользователь нажимает, должен быть отмечен полупрозрачным прямоугольником. Это легко. Я просто добавляю прямоугольник с некоторой непрозрачностью на холсте, который помещается поверх BitmapImage. Проблема заключается в том, что пользователь нажимает один и тот же регион несколько раз, затем новый прямоугольник будет добавлен поверх предыдущего прямоугольника, и из-за полупрозрачности объединенные прямоугольники будут темнее. Пожалуйста, посмотрите на изображение:Нарисуйте прямоугольники над bitmapimage в WPF

enter image description here

Итак, мой вопрос: как я должен рисовать прямоугольники, чтобы предотвратить такое поведение? Не важно, сколько раз пользователь нажимает на область или область перекрытия, область всегда будет иметь тот же полупрозрачный цвет.

Благодаря

ответ

1

Я не уверен, если вы хотите новый прямоугольник, чтобы сделать предыдущий пропадают или предотвратить потемнение при объединении нескольких прямоугольников.

Если Вы хотите показать только один прямоугольник

Вместо того чтобы создавать новый Rectangle каждый раз, использовать только один Rectangle элемент (это может быть даже определено при запуске формы) и скрыть его. Затем, когда пользователь нажимает на эскиз, просто покажите это Rectangle и установите его положение и размер соответствующим образом.

Если Вы хотите объединить несколько Прямоугольников без потемнения эффекта

Один из возможных способов управления, как сочетание цветов перекрывающихся прямоугольников является использование Path и добавить RectangleGeometry объектов в GeometryGroup с FillRule="NonZero" набором. Взгляните на эту статью за дополнительной информацией: http://mark-dot-net.blogspot.com/2008/05/combining-paths-in-xaml-for-silverlight.html.

+0

Спасибо за ответ! Я попробую ваше решение и вернусь. – exkoria

Смежные вопросы