WPF: Как избежать выхода изображения за границы холста?

У меня есть холст в качестве средства просмотра изображений. Его фон используется для размещения изображения, и я хотел бы поместить другое изображение поверх него. Итак, сценарий выглядит следующим образом:

 <Canvas Name="VisorCanvas"  Height="514"  Width="720">
   <Canvas.Background>
   <ImageBrush />
   </Canvas.Background>
   <Image Name="foreground"  />
</Canvas>

Я динамически вставляю изображения в программный код (C #).

Проблема в том, что если изображение слишком велико, оно выходит за границы холста. Например: у меня есть нерелевантное фоновое изображение, и я хочу показать квадрат внутри панели холста (поверх фона) следующим образом:

  • В любом случае размер квадрата будет изменен.
  • если он меньше размеров холста, я просто показываю его.
  • если он больше в любом измерении (ширине или высоте), мне нужно либо обрезать его, либо сделать прозрачной часть изображения. Таким образом я получаю режим ТВ или что-то подобное, поскольку фигура всегда будет казаться «внутри» холста (хотя часть обрезана)

Как я могу это сделать? Я пробовал:

  • Обрезать изображение с помощью CroppedBitmap, но это неточно.
  • Чтобы использовать прозрачность с помощью дополнительного изображения opacityMask, но я ' d необходимо создать растровое изображение маски (с прозрачностью) из исходного изображения, и я не знаю, как это сделать.
  • Чтобы создать «фотографию» с помощью RenderTargetBitmap и заменить изображение результатом этого метода, но Я не мог.

Я был бы признателен, если бы кто-нибудь мог пролить свет на это.

6
задан Matt 11 March 2011 в 17:10
поделиться