В Windows Presentation Foundation, я не могу найти способ вырезать изображение на основе формы другого изображения.
Например, я хотел бы показать чью-то фотографию в форма сердца.
Есть ответы как этот , которые обрезают изображение в прямоугольник или как этот , которые рисуют радиус, чтобы обрезать изображение в круг.
Но действительно ли обрезка является единственным способом?
Может ли WPF наложить изображение поверх фигуры и вырезать изображение на основе размеров фигуры?
Код, который у меня есть, делает обратное того, что я пытаюсь сделать. То, что у меня есть, использует слой overlay
в качестве маски для покрытия image
:
<Image
Name="HeartOverlay"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Panel.ZIndex="2"
/>
<Canvas
Name="Canvas"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Image
Name="Image"
Stretch="Uniform"
Panel.ZIndex="1"
/>
/>
HeartOverlay.Source = new Bitmap(@"C:\heart.png");
Image.Source = new Bitmap(@"C:\image.png");
Проблема здесь в том, что overlay
объединяется с image
и при сохранении / печати изображения также отображается оверлей.
См. изображение ниже в качестве примера. Обратите внимание на белые границы, которые особенно заметны при просмотре изображения в чем-то вроде приложения предварительного просмотра Ma c. Я хочу сохранить / распечатать изображение без белых полей.
Оценить любые указатели!