У меня есть холст в качестве средства просмотра изображений. Его фон используется для размещения изображения, и я хотел бы поместить другое изображение поверх него. Итак, сценарий выглядит следующим образом:
<Canvas Name="VisorCanvas" Height="514" Width="720">
<Canvas.Background>
<ImageBrush />
</Canvas.Background>
<Image Name="foreground" />
</Canvas>
Я динамически вставляю изображения в программный код (C #).
Проблема в том, что если изображение слишком велико, оно выходит за границы холста. Например: у меня есть нерелевантное фоновое изображение, и я хочу показать квадрат внутри панели холста (поверх фона) следующим образом:
- В любом случае размер квадрата будет изменен.
- если он меньше размеров холста, я просто показываю его.
- если он больше в любом измерении (ширине или высоте), мне нужно либо обрезать его, либо сделать прозрачной часть изображения. Таким образом я получаю режим ТВ или что-то подобное, поскольку фигура всегда будет казаться «внутри» холста (хотя часть обрезана)
Как я могу это сделать? Я пробовал:
- Обрезать изображение с помощью CroppedBitmap, но это неточно.
- Чтобы использовать прозрачность с помощью дополнительного изображения opacityMask, но я ' d необходимо создать растровое изображение маски (с прозрачностью) из исходного изображения, и я не знаю, как это сделать.
- Чтобы создать «фотографию» с помощью RenderTargetBitmap и заменить изображение результатом этого метода, но Я не мог.
Я был бы признателен, если бы кто-нибудь мог пролить свет на это.
задан Matt 11 March 2011 в 17:10
поделиться