2010-07-01 2 views
0

Имейте странный. У меня есть два эллипса, которые имеют непрозрачность 0,7. То, что я хотел бы сделать, это то, где пересекаются два эллипса, показывают другой цвет. В старом WF-изображении я бы пробежал каждый пиксель и поменял цвета, но я не уверен, как это сделать со слоем в Silverlight. У кого-нибудь есть идеи?Сочетание двух полупрозрачных эллипсов

Спасибо!

ответ

0

Редактировать: К сожалению, было несколько ошибок со свойствами различных элементов. Это проверено:

Создайте Path и поместите как Path.Data a GeometryGroup, в котором есть два EllipseGeometries как дочерние элементы. Установите GeometryGroup.FillRule в значение «EvenOdd», чтобы область, покрывающая оба эллипса, не была заполнена, и установите «Заполнить» цветом, который хотите использовать эллипсы (здесь: AliceBlue).

Поместите этот Путь в элемент управления с свойством «Фон», например «Граница», и установите этот фон в том цвете, который вы хотите, чтобы область, покрываемая эллипсами, была (здесь: желтая).

Затем вы устанавливаете Clip в ту же GeometryGroup, где FillRule установлен на «Nonzero», чтобы зона вокруг эллипсов также была окрашена цветом фона.

 <Border Background="Yellow"> 
      <Path Fill="AliceBlue" Stroke="Black" StrokeThickness="4"> 
       <Path.Data> 
        <GeometryGroup FillRule="EvenOdd"> 
         <EllipseGeometry Center="100,100" RadiusX="40" RadiusY="80" /> 
         <EllipseGeometry Center="100,100" RadiusX="80" RadiusY="40" /> 
        </GeometryGroup> 
       </Path.Data> 
      </Path> 
      <Border.Clip> 
       <GeometryGroup FillRule="Nonzero"> 
        <EllipseGeometry Center="100,100" RadiusX="40" RadiusY="80" /> 
        <EllipseGeometry Center="100,100" RadiusX="80" RadiusY="40" /> 
       </GeometryGroup> 
      </Border.Clip> 
     </Border> 

Если вам нужны оба эллипсы быть окрашены в разные цвета используют два пограничных и Path объектов, использовать тот же GeometryGroup с «EvenOdd» и установить каждый из Border.Clip к одному объекту EllipseGeometry.

Если вам нужно более подробное определение, используйте вместо 448405858009310335738888 вместо GeometryGroup и определите область с помощью ArcSegments.

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