代码之家  ›  专栏  ›  技术社区  ›  vaughan

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

  •  3
  • vaughan  · 技术社区  · 15 年前

    我正试图用网格控件中的圆来剪辑一个4:3的图像。

    我需要一个圆剪辑来显示一个完美的圆从中间的图像。见下文。

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

    该圆应随图像动态调整大小。

    我尝试过画布。剪辑和椭圆+VisualBrush,但没有达到正确的行为。

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  3
  •   vaughan    15 年前

    解决了我的问题。

    解决方案是使用转换器作为 Grid.Clip 财产。我使用了以下站点的代码。

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

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

    椭圆 使用 height width 同时 椭圆几何 使用 radiusx,y center .

    椭圆 我可以将高度和宽度设置为图像的高度,以获得所需的剪辑。

    如果表达式与绑定IE一起工作,会简单得多。 {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>