C# 在Windows Phone中以圆圈显示图像

C# 在Windows Phone中以圆圈显示图像,c#,performance,windows-phone-7,windows-phone-8,windows-phone,C#,Performance,Windows Phone 7,Windows Phone 8,Windows Phone,我正在创建一个WP(7.1+8)应用程序,它要求我在一个圆圈内显示图像(如Google+)。 我找到了一个使用GradientBrush通过以下代码完成任务的解决方案:- BitmapImage bitmapImage = new BitmapImage(); bitmapImage.UriSource = new Uri("http://url-of-the-image", UriKind.Absolute); image.CacheMode = new BitmapCache(); imag

我正在创建一个WP(7.1+8)应用程序,它要求我在一个圆圈内显示图像(如Google+)。
我找到了一个使用GradientBrush通过以下代码完成任务的解决方案:-

BitmapImage bitmapImage = new BitmapImage();
bitmapImage.UriSource = new Uri("http://url-of-the-image", UriKind.Absolute);
image.CacheMode = new BitmapCache();
image.Source = bitmapImage;
image.Stretch = Stretch.UniformToFill;
image.VerticalAlignment = System.Windows.VerticalAlignment.Center;

//Setting up the mask
RadialGradientBrush opacityMask = new RadialGradientBrush();
GradientStop gs1 = new GradientStop();
GradientStop gs2 = new GradientStop();
GradientStop gs3 = new GradientStop();
gs1.Color = Color.FromArgb(255, 0, 0, 0);
gs1.Offset = 0.0;
gs2.Color = Color.FromArgb(255, 0, 0, 0);
gs2.Offset = 0.999;
gs3.Color = Color.FromArgb(0, 0, 0, 0);
gs3.Offset = 1.0;
opacityMask.GradientStops.Add(gs1);
opacityMask.GradientStops.Add(gs2);
opacityMask.GradientStops.Add(gs3);
image.OpacityMask = opacityMask;  

我想知道,如果我需要对大量图像(比如50张)执行此操作,性能将产生什么影响。

根据您的要求使用以下代码片段

<Ellipse Height="300" Width="300">
       <Ellipse.Fill>
             <ImageBrush ImageSource="images/WmDev.jpg" AlignmentX="Center" AlignmentY="Center" />
       </Ellipse.Fill>
</Ellipse>   


希望有帮助。

使用剪辑显示控件的部分区域

<Image Source="YouImage.jpg">
    <Image.Clip>
        <EllipseGeometry Center="50,50" RadiusX="50" RadiusY="50" />
    </Image.Clip>
</Image>


将中心、RadiusX和RadiusY更改为您方便的位置。

此问题已得到解答。如果您想查看更多详细信息,可以查看 XAML解决方案将是

    <Image Source=”{Binding Converter={StaticResource ContactPictureConverter}}” Width=”48″ Height=”48″ Stretch=”Fill”
>

<Image.Clip>

<EllipseGeometry Center=”24,24″ RadiusX=”24″ RadiusY=”24″ />

</Image.Clip>

</Image>


谢谢,我也会尝试这种方法,以比较性能。当然,Vikas,你可以随时尝试。