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
。因此,添加lineShapeImageBrush.Stretch=Stretch.UniformToFill代码>创建新的ImageBrush
后修复该问题。