UWP xaml 圆形头像

圆形头像

现在很多软件都喜欢使用圆形头像
win10 uwp使用圆形头像很简单

            <Ellipse Width="200" Height="200" Margin="10,10,10,10">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="assets/1.jpg"/>
                </Ellipse.Fill>
            </Ellipse>

使用这样的圆形头像没有对原有图形的渲染大小进行变化,一个大的图形不会解码为刚好要的,我们进行一步修改

代码:

<Page
    x:Class="Roundhead.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Roundhead"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel Orientation="Vertical">
            <Ellipse Width="200" Height="200" Margin="10,10,10,10">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="assets\1.jpg"/>
                </Ellipse.Fill>
            </Ellipse>
            <TextBlock Text="我的头像是圆" HorizontalAlignment="Center" />
        </StackPanel>
    </Grid>
</Page>

圆形头像

去掉黑边

程序界面有一些
程序界面有一些
看起来不好
在app.xaml.cs找到this.DebugSettings.EnableFrameRateCounter = true;
写为false
this.DebugSettings.EnableFrameRateCounter = false;

拖动打开图形

<ImageBrush ImageSource="assets\1.jpg"/>添加x:Name="ximg"
在Grid增加AllowDrop="True" DragOver="Grid_DragOver" Drop="Grid_Drop"
Grid_Drop

        private async void Grid_Drop(object sender , DragEventArgs e)
        {
            var defer = e.GetDeferral();

            try
            {
                DataPackageView dataView = e.DataView;
                // 拖放类型为文件存储。
                if (dataView.Contains(StandardDataFormats.StorageItems))
                {
                    var files = await dataView.GetStorageItemsAsync();
                    StorageFile file = files.OfType<StorageFile>().First();
                    if (file.FileType == ".png" || file.FileType == ".jpg")
                    {
                        // 拖放的是图片文件。
                        BitmapImage bitmap = new BitmapImage();
                        await bitmap.SetSourceAsync(await file.OpenAsync(FileAccessMode.Read));
                        ximg.ImageSource = bitmap;
                    }                    
                }
            }
            finally
            {
                defer.Complete();
            }
        }

Grid_DragOver

        private void Grid_DragOver(object sender , DragEventArgs e)
        {
            //需要using Windows.ApplicationModel.DataTransfer;
            e.AcceptedOperation = DataPackageOperation.Copy;

            // 设置拖放时显示的文字。
            //e.DragUIOverride.Caption = "拖放打开";

            // 是否显示拖放时的文字。默认为 true。
            //e.DragUIOverride.IsCaptionVisible = false;

            // 是否显示文件预览内容,一般为文件图标。默认为 true。
            // e.DragUIOverride.IsContentVisible = false;

            // Caption 前面的图标是否显示。默认为 true。
            //e.DragUIOverride.IsGlyphVisible = false;

            //需要using Windows.UI.Xaml.Media.Imaging;
            //设置拖动图形,覆盖文件预览
            //e.DragUIOverride.SetContentFromBitmapImage(new BitmapImage(new Uri("ms-appx:///Assets/1.jpg")));

            e.Handled = true;
        }

这里写图片描述

e.AcceptedOperation = DataPackageOperation.Copy;设置拖动作为复制
需要using Windows.ApplicationModel.DataTransfer

拖放显示文字e.DragUIOverride.Caption = "拖放打开";
这里写图片描述

是否显示拖放时的文字。默认为 truee.DragUIOverride.IsCaptionVisible = false;
这里写图片描述

复制图标是否显示 e.DragUIOverride.IsGlyphVisible = false;
这里写图片描述

设置拖动图形,覆盖文件预览e.DragUIOverride.SetContentFromBitmapImage(new BitmapImage(new Uri(img)));
这里写图片描述

代码:https://code.csdn.net/lindexi_gd/lindexi_gd/tree/master/Roundhead

参考:http://timheuer.com/blog/archive/2015/05/06/making-circular-images-in-xaml-easily.aspx

### 创建 UWP 应用中的可输入文本框 (TextBox) 在 UWP 应用开发中,`TextBox` 是一种允许用户输入和编辑文本的控件。以下是关于如何在 XAML 文件中定义 `TextBox` 控件并结合其他 UI 元素使用的具体方法。 #### 定义基本 TextBox 以下是一个简单的 `TextBox` 示例: ```xml <StackPanel> <!-- 提示文字 --> <TextBlock Text="请输入您的姓名:" Margin="0,10,0,0"/> <!-- 文本框 --> <TextBox x:Name="UserInputBox" PlaceholderText="在此处输入..." Width="200" Height="30" Margin="0,10,0,0"/> <!-- 显示按钮 --> <Button Content="提交" Click="Submit_Click" Margin="0,20,0,0"/> </StackPanel> ``` 上述代码片段展示了如何在一个垂直堆叠面板 (`StackPanel`) 中放置一个提示标签 (`TextBlock`) 和一个可以接收用户输入的文本框 (`TextBox`)。此外还有一个按钮 (`Button`) 用于触发某些操作[^1]。 #### 动态响应用户的输入 为了使应用能够动态响应用户的行为,在后台 C# 代码文件中需要编写相应的逻辑。例如,当点击“提交”按钮时读取 `TextBox` 的内容并将结果显示出来。 ```csharp private void Submit_Click(object sender, RoutedEventArgs e) { string userInput = UserInputBox.Text; GreetingTextBlock.Text = $"你好,{userInput}!"; } ``` 这里假设存在另一个名为 `GreetingTextBlock` 的 `TextBlock` 来展示问候消息。 #### 自适应布局设计 如果希望界面更加灵活适配不同屏幕尺寸,则可以考虑采用相对布局或者视觉状态管理器来调整各组件的位置关系[^3]。下面给出基于 `RelativePanel` 的简单例子: ```xml <RelativePanel> <TextBox x:Name="textBox1" PlaceholderText="请输入..." RelativePanel.AlignHorizontalCenterWithPanel="True" Margin="5"/> <Button x:Name="submitButton" Content="确认" Background="LightGreen" RelativePanel.Below="textBox1" RelativePanel.AlignHorizontalCenterWith="textBox1" Margin="5" Click="Submit_Click"/> </RelativePanel> ``` 这段代码利用了 `RelativePanel` 属性让按钮位于文本框下方居中位置。 --- ### 总结 以上介绍了如何在 UWP 应用项目里通过 XAML 配置一个基础的 `TextBox` 输入框及其关联的操作流程,并提及到部分高级特性如自适应布局的设计思路[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值