使用圆圈在WPF中剪切4:3图像

时间:2010-05-27 12:49:46

标签: c# wpf drawing

我正在尝试用网格控件中的圆圈剪切4:3图像。

我需要圆形剪辑以完美的圆圈从中间显示图像。见下文。

alt text http://www.cse.unsw.edu.au/~vjro855/Untitled.png

圆圈应根据图像动态调整大小。

我尝试过Canvas.Clip和Ellipse + VisualBrush而没有达到正确的行为。

谢谢!

1 个答案:

答案 0 :(得分:3)

解决了我的问题。

解决方案是将转换器用作Grid.Clip属性的一部分。我使用了以下网站的代码。

http://blogorama.nerdworks.in/entry-CenteringelementsonacanvasinWP.aspx

我遇到的挑战是必须使用EllipseGeometry而不是Ellipse

Ellipse使用heightwidthEllipseGeometry使用radiusx,ycenter

使用Ellipse我可以将高度和宽度设置为图像的高度,以获得我需要的剪辑。

如果表达式使用绑定,那将会更简单。 {Binding Path=expr}

    <Grid>

    <Grid.Clip>  

        <EllipseGeometry>
            <EllipseGeometry.RadiusX>
                <MultiBinding
                    Converter="{StaticResource HalfValue1}">
                    <Binding
                        ElementName="vemap"
                        Path="ActualHeight" />
                </MultiBinding>
            </EllipseGeometry.RadiusX>
            <EllipseGeometry.RadiusY>
                <MultiBinding
                    Converter="{StaticResource HalfValue1}">
                    <Binding
                        ElementName="vemap"
                        Path="ActualHeight" />
                </MultiBinding>
            </EllipseGeometry.RadiusY>
            <EllipseGeometry.Center>
                <MultiBinding
                    Converter="{StaticResource HalfValue}">
                    <Binding
                        ElementName="vemap"
                        Path="ActualHeight" />
                    <Binding
                        ElementName="vemap"
                        Path="ActualWidth" />
                </MultiBinding>
            </EllipseGeometry.Center>
        </EllipseGeometry>

    </Grid.Clip>       

    <Image>

</Grid>