WPF:如何避免图像脱离画布';中国的边界?
我有一个画布作为图像查看器。它的背景是用来放置一个图像,我想把另一个图像放在上面。所以,场景是这样的:WPF:如何避免图像脱离画布';中国的边界?,wpf,canvas,transparency,Wpf,Canvas,Transparency,我有一个画布作为图像查看器。它的背景是用来放置一个图像,我想把另一个图像放在上面。所以,场景是这样的: <Canvas Name="VisorCanvas" Height="514" Width="720"> <Canvas.Background> <ImageBrush /> </Canvas.Background> <Image Name="foreground" /> </Canvas>
<Canvas Name="VisorCanvas" Height="514" Width="720">
<Canvas.Background>
<ImageBrush />
</Canvas.Background>
<Image Name="foreground" />
</Canvas>
我在代码隐藏(C#)中动态插入图像
问题是,如果图像太大,则图像会超出画布的边界。例如:我有一个不相关的背景图像,我想通过以下方式在画布面板内(背景上方)显示一个正方形:
- 在任何情况下,正方形的图像都将调整大小
- 如果它比画布的尺寸小,我就显示出来
- 如果它在任何尺寸(宽度或高度)都较大,我需要裁剪它或将图像的一部分设置为透明。这样做,我实现了电视模式或类似的东西,因为图形总是看起来“在”画布中(尽管部分被裁剪)
- 使用裁剪位图裁剪图像,但不准确
- 要通过附加的不透明贴图图像使用透明度,但我需要从原始图像创建一个具有透明度的贴图,我不知道如何做到这一点
- 使用RenderTargetBitmap创建一张“照片”,并用此方法的结果替换图像,但我不能
Canvas
元素中设置cliptobunds=“True”
,这将阻止图像超出画布的边界
您可能还想考虑不要使用<代码>图像< /代码>元素。您可以使用
矩形
,将填充
设置为图像笔刷
,因为您可以使用Viewbox
和Viewport
属性选择所需源图像的哪一部分以及所需输出的大小。(将ViewportUnits
设置为Absolute
以精确控制绘制区域的尺寸。)cliptobunds!修复了一些Z顺序问题。为我工作。为了澄清,应该在父对象上设置ClipToBounds。@TylerPantuso所说的“父对象”是指画布
?如果是的话,那正是我在第一句话中所说的。如果不是,你是什么意思?您是否发现需要在画布的父级上设置它?如果是这样,那就不正常了。