合并ImageBrush和SolidColorBrush?(作为Canvas的背景)

3
我有一个ImageBrush和一个SolidColorBrush。现在我想用这些属性设置我的画布背景。
我可以轻松地将我的背景设置为ImageBrush或SolidColorBrush,但我是否可以进行合并?问题是我的ImageBrush.Stretch设置为Uniform,所以我可以看到背景颜色!(如果使用“Fill”则不会出现这种情况)
现在,Brush是一个抽象类,所以我想象的解决方案是扩展它,但对我来说,这实在是太麻烦了,而且这个事情听起来很简单和常见...
难道没有其他的解决方案吗?
1个回答

1

虽然这种方法有缺点,即忽略了图像的绝对大小和更重要的是长宽比,但它可能会给你一些提示。

<Canvas>
    <Canvas.Background>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Brush="Orange">
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="0,0,1,1"/>
                        </GeometryDrawing.Geometry>
                    </GeometryDrawing>
                    <ImageDrawing ImageSource="C:\Users\Public\Pictures\Sample Pictures\Desert.jpg" Rect="0.2,0.2,0.6,0.6" />
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Canvas.Background>
</Canvas>

我想在代码后端完成它!在xaml中,我得到了以下代码,听起来对我来说更简单:<Canvas Background="Red"> <Image Canvas.Top="10" Canvas.Left="10" Source="MyImage.jpg" /> </Canvas> - Guillaume Slashy
当然可以,但那就不是一个“合并”的画笔了。你可能想将其定义为资源或其他什么。 - Clemens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接