C# 椭圆拉伸没有效果

C# 椭圆拉伸没有效果,c#,uwp,uwp-xaml,ellipse,stretch,C#,Uwp,Uwp Xaml,Ellipse,Stretch,有人能解释为什么拉伸在椭圆元素中没有效果吗。无论我使用None、Fill、UniformToFill还是Uniform,结果都是一样的 如果我在DataTemplate(GridView)中使用相同的代码,那么它将正常工作 <Button x:Name="UI_Application_LogIn_ProfilePictureButton_Button" Style="{StaticResource LogInButton}" BorderBrush="{ThemeResource Syst

有人能解释为什么
拉伸
椭圆
元素中没有效果吗。无论我使用
None
Fill
UniformToFill
还是
Uniform
,结果都是一样的

如果我在
DataTemplate
GridView
)中使用相同的代码,那么它将正常工作

<Button x:Name="UI_Application_LogIn_ProfilePictureButton_Button" Style="{StaticResource LogInButton}" BorderBrush="{ThemeResource SystemControlForegroundBaseMediumBrush}" IsTabStop="False" UseSystemFocusVisuals="False">
    <Grid x:Name="UI_Application_LogIn_ProfilePicture_Grid" IsHitTestVisible="False">
        <Ellipse x:Name="UI_Application_LogIn_ProfilePicture" Width="160" Height="160">
            <Ellipse.Fill>
                <ImageBrush x:Name="UI_Application_LogIn_ProfilePictureImageBrush" Stretch="UniformToFill" AlignmentY="Top"/>
            </Ellipse.Fill>
        </Ellipse>
        <Ellipse x:Name="UI_Application_LogIn_ProfilePictureNonStaticLightEffect" Width="160" Height="160" Fill="{ThemeResource SystemControlHighlightTransparentRevealBorderBrush}"/>
    </Grid>
</Button>

如果要创建圆形图像,请使用windows社区工具包中的Imagex控件

您可以查找并使用imagex 或者,您可以通过nuget在Microsoft.Toolkit.Uwp.UI.Controls上的上引用您的应用程序
至于您当前的问题,这是因为拉伸只影响eclipse内部的笔刷,而不影响eclipse本身,为了进行这样的缩放调整,您必须将eclipse环绕在一个Viewbox控件上,然后像在图像上一样设置其拉伸属性。这真是一个大脑放屁。当我创建新的ImageBrush时,我忘记在代码中使用Stretch。所以添加line
if(BrushStretch!=null)(TargetShape.Fill作为ImageBrush.Stretch=BrushStretch.Value创建新ImageBrush后修复该问题

    //STORAGE FILE TO SHAPE
    public static async Task<Shape> StorageFileToShape(Shape TargetShape, StorageFile SourceStorageFile, Stretch? BrushStretch, AlignmentX? BrushAlignmentX, AlignmentY? BrushAlignmentY)
    {
        //IF SHAPE NULL RETURN NULL
        if (TargetShape == null) return null;
        //IF STORAGEFILE NULL OR NOT AVAILABLE RETURN NULL
        if (SourceStorageFile == null || !SourceStorageFile.IsAvailable) return null;
        //IF BRUSH IS NULL OR ITS TYPE ISN'T 'ImageBrush' CREATE NEW BRUSH
        if (TargetShape.Fill == null || TargetShape.Fill.GetType() != typeof(ImageBrush)) TargetShape.Fill = new ImageBrush();
        //SET STRETCH
        if (BrushStretch != null) (TargetShape.Fill as ImageBrush).Stretch = BrushStretch.Value;
        //SET ALIGNMENT X
        if (BrushAlignmentX != null) (TargetShape.Fill as ImageBrush).AlignmentX = BrushAlignmentX.Value;
        //SET ALIGNMENT Y
        if (BrushAlignmentY != null) (TargetShape.Fill as ImageBrush).AlignmentY = BrushAlignmentY.Value;
        //GET PICTURE 
        (TargetShape.Fill as ImageBrush).ImageSource = await StorageFileToBitmapImage(SourceStorageFile);
        //SET SHAPE FILL
        TargetShape.Fill = TargetShape.Fill as ImageBrush;
        //RETURN SHAPE
        return TargetShape;
    }
    //STORAGE FILE TO BITMAP IMAGE
    public static async Task<BitmapImage> StorageFileToBitmapImage(StorageFile SourceStorageFile)
    {
        BitmapImage TargetBitmapImage = new BitmapImage();
        TargetBitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
        using (var BitmapImageFileStream = await SourceStorageFile.OpenAsync(FileAccessMode.Read))
        {
            await TargetBitmapImage.SetSourceAsync(BitmapImageFileStream);
        }
        return TargetBitmapImage;
    }
//要成形的存储文件
公共静态异步任务StorageFileToShape(形状目标形状、存储文件源StorageFile、拉伸?画笔拉伸、对齐X?画笔对齐X、对齐Y?画笔对齐Y)
{
//如果形状为NULL,则返回NULL
if(TargetShape==null)返回null;
//如果STORAGEFILE为NULL或不可用,则返回NULL
if(SourceStorageFile==null | |!SourceStorageFile.IsAvailable)返回null;
//如果笔刷为NULL或其类型不是“ImageBrush”,请创建新笔刷
如果(TargetShape.Fill==null | | TargetShape.Fill.GetType()!=typeof(ImageBrush))TargetShape.Fill=newImageBrush();
//拉长
如果(BrushStretch!=null)(TargetShape.Fill为ImageBrush.Stretch=BrushStretch.Value;
//设置对齐X
如果(BrushAlignmentX!=null)(TargetShape.Fill作为ImageBrush.AlignmentX=BrushAlignmentX.Value;
//设置对齐Y
如果(BrushAlignmentY!=null)(TargetShape.Fill为ImageBrush.AlignmentY=BrushAlignmentY.Value;
//了解情况
(TargetShape.Fill作为ImageBrush.ImageSource=Wait StorageFileToBitmapImage(SourceStorageFile);
//设置形状填充
TargetShape.Fill=TargetShape.Fill为ImageBrush;
//返回形状
返回目标形状;
}
//位图图像的存储文件
公共静态异步任务StorageFileToBitmapImage(StorageFile SourceStorageFile)
{
BitmapImage TargetBitmapImage=新的BitmapImage();
TargetBitmapImage.CreateOptions=BitmapCreateOptions.IgnoreImageCache;
使用(var BitmapImageFileStream=wait SourceStorageFile.OpenAsync(FileAccessMode.Read))
{
等待TargetBitmapImage.SetSourceAsync(BitmapImageFileStream);
}
返回TargetBitmapImage;
}

我找到了拉伸不起作用的原因。这真是一个大脑放屁。创建新的
ImageBrush
时,我忘记在代码中使用
Stretch
。因此,添加line
ShapeImageBrush.Stretch=Stretch.UniformToFill创建新的
ImageBrush
后修复该问题。