2017-02-22 7 views
0

Я хочу клип Изображение для эллипса, например. UI-элемент имеет Clip, но Clip в API Runtime Windows должен быть RectangleGeometry. Я могу достичь того же результата, используя элемент Ellipse и ImageBrush в качестве заливки кисти:Как скопировать изображение (UI-элемент) в геометрию образца?

How to clip image to ellipse in XAML

Но тогда я не могу размер или переместить мое изображение, потому что кисть, не UI-элемент. Итак, как изображение клипа не является прямоугольной геометрией? Например, я хочу: Move image into ellipse

Возможно, я могу использовать альфа-область для UI-элемента? Или OpacityMask? Может быть, это возможно с win2d?

ответ

0

Способ, которым вы должны иметь возможность нарисовать фигуру с GeometryGroup внутри Path и использовать форму для создания маски для изображения. Форма может быть составлена ​​с помощью RectangleGeometry и EllipseGeometry, и форма должна быть того же размера с изображением (обратите внимание, что размер фигуры не отличается от самого изображения, а не для управления изображением, поскольку для управления изображением может быть пустое пространство для адаптации отношение изображения). Заполните дорожку, затем покажите изображение Ellipse.

Например, код выглядит следующим образом:

<Grid> 
    <Image Source="Assets/caffe1.jpg" Height="200" Canvas.ZIndex="-1" Width="265"> 
    </Image> 
    <Path Fill="White" Height="200" Width="265"> 
     <Path.Data> 
      <GeometryGroup> 
       <EllipseGeometry Center="100,100" RadiusX="100" RadiusY="100"/> 
       <RectangleGeometry Rect="0,0 265,200" ></RectangleGeometry> 
      </GeometryGroup> 
     </Path.Data> 
    </Path> 
</Grid> 

И результат:

enter image description here

Этот путь может позволить вам определить клип изображения в произвольной форме, как то, что вы хотите, также размер изображения и размер клипа, как вы хотите. Подробнее о том, как рисовать фигуры, пожалуйста, обращайтесь к this article.

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