Avalonia PathIcon使用

这篇具有很好参考价值的文章主要介绍了Avalonia PathIcon使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PathIcon是一个Avalonia内置的控件,可以根据Geometry绘制一个图标。

源码

PathIcon间接继承TemplatedControl,只有一个Geometry类型的依赖属性Data:

public class PathIcon : IconElement
{
    static PathIcon()
    {
        AffectsRender<PathIcon>(DataProperty);
    }

    public static readonly StyledProperty<Geometry> DataProperty =
        AvaloniaProperty.Register<PathIcon, Geometry>(nameof(Data));

    public Geometry Data
    {
        get { return GetValue(DataProperty); }
        set { SetValue(DataProperty, value); }
    }
}

public abstract class IconElement : TemplatedControl
{
}

外观也很简单,一个Path,Data绑定PathIcon的属性Data,填充色绑定属性Foreground:

<ControlTheme x:Key="{x:Type PathIcon}" TargetType="PathIcon">
  <Setter Property="Background" Value="Transparent" />
  <Setter Property="Height" Value="{DynamicResource IconElementThemeHeight}" />
  <Setter Property="Width" Value="{DynamicResource IconElementThemeWidth}" />
  <Setter Property="Template">
    <ControlTemplate>
      <Border Background="{TemplateBinding Background}">
        <Viewbox Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
          <Path Fill="{TemplateBinding Foreground}" Data="{TemplateBinding Data}" Stretch="Uniform" />
        </Viewbox>
      </Border>
    </ControlTemplate>
  </Setter>
</ControlTheme>

编辑Geometry

首先要创建Geometry,Avalonia UI Fluent Icons提供了一系列的图标集合,见https://avaloniaui.github.io/icons.html。获取所需的图标后,如果需要微调,可以使用Blend进行调整。

比如创建一个登陆窗口,需要一个账号、密码图标:

  1. 打开Blend,创建一个WPF项目,新建一个UserControl;
  2. 从Fluent Icons中查找账号相关的图标,复制Geometry的内容;
  3. 在UserControl的布局中,添加一个Path,Data属性粘贴上述复制的内容;
  4. 在编辑窗口中新增、删除或拖动控制点进行微调,在属性窗口中可以选择填充色、画笔颜色等;
  5. 重复2-3-4,编辑密码图标;
    Avalonia PathIcon使用

使用PathIcon

  1. 在创建的Avalonia项目中,添加一个资源字典文件,将使用Blend编辑的Geometry复制过来:
<ResourceDictionary xmlns="https://github.com/avaloniaui"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!-- Add Resources Here -->
	<StreamGeometry x:Key="login">Blend编辑的账号图标...</StreamGeometry>
	<StreamGeometry x:Key="password">Blend编辑的密码图标...</StreamGeometry>
</ResourceDictionary>
  1. 将资源文件添加到App资源中:
<!-- App.axaml -->
<Application.Resources>
	<ResourceDictionary>
		<ResourceDictionary.MergedDictionaries>
			<ResourceInclude Source="avares://PathIconUsing/Contents/Icons.axaml"/>
		</ResourceDictionary.MergedDictionaries>
	</ResourceDictionary>
</Application.Resources>
  1. 编辑登陆窗口视图:
  • 添加两个TextBox,一个按钮,并调整布局;
  • TextBox的InnerLeftContent内容使用PathIcon控件,PathIcon的Data属性使用1中定义的Geometry,Foreground属性使用在Blend中设置的填充色;
<Grid RowDefinitions="*,*,*" Height="150" Width="250">
	<TextBox VerticalAlignment="Center">
		<TextBox.InnerLeftContent>
			<PathIcon Data="{DynamicResource ResourceKey=login}" Margin="5" Foreground="#FF1AA2D9"/>
		</TextBox.InnerLeftContent>
	</TextBox>
	<TextBox Grid.Row="1" VerticalAlignment="Center">
		<TextBox.InnerLeftContent>
			<PathIcon Data="{DynamicResource ResourceKey=password}" Margin="5" Foreground="#FF1AA2D9"/>
		</TextBox.InnerLeftContent>
	</TextBox>
	<Button Content="登陆" Grid.Row="3" Width="250"
			HorizontalContentAlignment="Center" Background="#FF1AA2D9" Foreground="White"/>
</Grid>

效果如下图:
Avalonia PathIcon使用文章来源地址https://www.toymoban.com/news/detail-786983.html

到了这里,关于Avalonia PathIcon使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个.NET内置依赖注入的小型强化版

    .NET生态中有许多依赖注入容器。在大多数情况下,微软提供的内置容器在易用性和性能方面都非常优秀。外加ASP.NET Core默认使用内置容器,使用很方便。 但是笔者在使用中一直有一个头疼的问题:服务工厂无法提供请求的服务类型相关的信息。这在一般情况下并没有影响,

    2024年04月17日
    浏览(49)
  • Net跨平台UI框架Avalonia入门-安装和使用(v11版本)

    avalonia v11 版本发布了,增加了很多新的功能,Avalonia的扩展也同步升级了。 主要更新内容: 辅助功能:增加了对各种辅助工具的支持,提高了Avalonia应用程序的可用性。 输入法编辑器(IME)支持:允许在所有语言中使用屏幕键盘和输入。 合成渲染器:提供更强大、高效和灵

    2024年02月09日
    浏览(36)
  • 关于 Java JDK 中内置的一个类:java.lang.String

    关于 Java JDK 中内置的一个类:java.lang.String 1、String 表示字符串类型,属于引用数据类型,不属于基本数据类型。 2、在 java 中随便使用双引号括起来的都是 String 对象。例如:“abc”, “def”, “hello world!”,这是 3 个 String 对象。 3、java 中规定,双引号括起来的字符串,是不

    2024年01月16日
    浏览(18)
  • 虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序

    虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序 获取虚拟桌宠模拟器 OnSteam(免费) 或 通过[Nuget]内置到你的WPF应用程序 虚拟桌宠模拟器是一款桌宠软件,支持各种互动投喂等. 开源免费并且支持创意工坊. 反正免费为啥不试试呢( 该游戏为 [虚拟主播模拟器] 内

    2024年02月08日
    浏览(33)
  • Avalonia中用FluentAvalonia+DialogHost.Avalonia实现界面弹窗和对话框

    本文是项目中关于 弹窗界面 设计的技术分享,通过 FluentAvalonia + DialogHost.Avalonia 开源nuget包来实现项目中需要 弹框显示的界面 和所有的 对话框 的展示。 效果如下: 本项目是基于Avalonia的GPT的AI会话项目。采用的是最新稳定版本 11.0.0-rc1.1 。希望通过该项目了解和学习Avalon

    2024年02月16日
    浏览(42)
  • keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

    目录 keep-alive  使用 keep-alive 的示例代码: 手动清除组件缓存的示例代码: keep-alive 组件有以下几个优点: keep-alive 的原理: 使用 keep-alive 组件,你可以包裹需要缓存的组件,然后这些组件在切换时将会被缓存起来,而不是每次都重新创建。 使用 keep-alive 的示例代码: 我们

    2024年02月08日
    浏览(29)
  • 使用Python内置模块加速SQL查询

    大家好,假设你正在查阅一本书的页面,你想要更快地找到你正在寻找的信息。那么你可能会查找术语索引,然后跳转到引用特定术语的页面,SQL中的索引与书籍中的索引工作原理类似。 在大多数实际系统中,都将对包含大量行的数据库表运行查询(想象一下数百万行),需

    2024年02月11日
    浏览(31)
  • Httprunner系列(六):httprunner内置函数使用

    类名开头必须是Test 定义的测试类,需要继承httprunner teststeps为测试步骤,每一个测试步骤叫做step step里的RunRequest,是待测的API名字,可按照接口名称填写 .py文件的尾缀,必须是_test Httprunner:导入Httprunner类,后面的测试类,继承于Httprunner Config:全局设置,可以设置全局变

    2023年04月13日
    浏览(31)
  • 如何使用命令删除Win10内置应用

           此操作有可能导致微软商店中下载的应用被自动卸载,需要先记录好电脑中的所有软件信息,并备份电脑的重要数据,已避免产生不必要的损失。        首先,以管理员身份打开 PowerShell ,只需要按住快捷键 Windows + X ,或右键点击左下角的 win 图标,然后从高级用

    2023年04月09日
    浏览(27)
  • Windows下安装使用Kafka(使用Kafka内置的ZooKeeper)

    Kafka2.8版本才开始自带了Zookeeper,所以注意下版本 kafka官网:https://kafka.apache.org kafka配置快速入门:https://kafka.apache.org/quickstart kafka下载页面:https://kafka.apache.org/downloads 下载完成后解压到当前目录 修改config下的zookeeper.properties 修改config下的server.properties 进入 /bin/windows 下 使用

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包