MAUI中Maui.Graphics.Controls绘制控件

简介

Microsoft.Maui.Graphics是一个完全采用C#的iOS,Android,Windows,macOS,Tizen和Linux的跨平台图形库。
对于MAUI项目当中绘制的方案是使用不同平台的控件来而非自绘。当然MAUI当中也使用了Microsoft.Maui.Graphics,
MAUI Preview9更新中, 引入了新的API能够轻松的将边框、阴影、形状添加到其中。

Microsoft.Maui.Graphics.Controls

Microsoft.Maui.Graphics.Controls是一个.NET MAUI 实验性项目,该项目通过Microsoft.Maui.Graphics库来绘制控件, 具有多种内置主题,
这意味着, 您可以在你现有的MAUI项目当中使用它。

接下来, 主要讲解如何使用Microsoft.Maui.Graphics.Controls 以及如何自行绘制控件。

使用Microsoft.Maui.Graphics.Controls

首先, 创建一个MAUI项目, 添加新的Nuget包源并且安装它。
8f5452d82aa641fb79c168361b1adc6c.png

确保Nuget包源的依赖版本与当前MAUI项目版本一致6.0.101-preview.10.2068

打开MauiProgram文件, 添加 ConfigureGraphicsControls

public static MauiApp CreateMauiApp(){var builder = MauiApp.CreateBuilder();builder.UseMauiApp<App>().ConfigureFonts(fonts =>{fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");}).ConfigureGraphicsControls();return builder.Build();}

启动后,效果如下所示:
0a64d00376b8a9d236e50764fe567368.png

说明: 可以通过ConfigureGraphicsControls(Microsoft.Maui.Graphics.Controls.DrawableType.Fluent)参数配置控件的风格, 提供了: Cupertino, Fluent ,Material 三种选项。

绘制控件

如果你想要完全实现自定义控件或者修改控件的某些方面, 你都可以使用它来做到这一点, 下来演示如何使用该库来绘制自定义的圆形控件。

1.创建Circle类, 继承于GraphicsView, 并且重写Draw方法,绘制指定宽度颜色的圆形。

public class Circle : Microsoft.Maui.Graphics.Controls.GraphicsView{public static readonly BindableProperty ForegroundProperty =BindableProperty.Create(nameof(Foreground), typeof(Color),typeof(Circle), null);public Color Foreground{get => (Color)GetValue(ForegroundProperty);set => SetValue(ForegroundProperty, value);}public static readonly BindableProperty SizeProperty =BindableProperty.Create(nameof(Size), typeof(float),typeof(Circle), null);public float Size{get { return (float)GetValue(SizeProperty); }set { SetValue(SizeProperty, value); }}public override void Draw(ICanvas canvas, RectangleF dirtyRect){base.Draw(canvas, dirtyRect);canvas.SaveState();canvas.FillColor = Foreground;var x = dirtyRect.X;var y = dirtyRect.Y;canvas.FillEllipse(x, y, Size, Size);canvas.RestoreState();} }

2.XAML中声明控件,设置指定大小及颜色

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"x:Class="MAUIRender.MainPage"xmlns:my="clr-namespace:MAUIRender" xmlns:ctor="clr-namespace:MAUIRender.Controls" BackgroundColor="{DynamicResource SecondaryColor}"><Grid><StackLayout><ctor:Circle Size="50" Foreground="Blue"/></StackLayout></Grid>
</ContentPage>

3.启动项目,查看控件对应效果:
920a883c3e069d3087472f94d2ab09c9.png

总结

本篇文章主要介绍如何在MAUI项目中使用Microsoft.Maui.Graphics.Controls, 以及通过它实现自定义控件的扩展功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BGP聚合as-set advertise-map

advertise-map xxx 用来挂汇总路由的&#xff0c;当route-map xxx 中的路由存在时&#xff0c;才会出现汇总路由。否则没有汇总路由只继承advertise-map xxx 中路由的属性当汇总路由携带了多个明细属性&#xff0c;可用advertise-map xxx 来移除某个明细路由的路由属性实验拓扑…

Android之如何解决popupWindow(pw.setFocusable(true))按返回键和menu键退出

先爆照: 问题: 使用过popupWindow的时候,我们为了让其它地方不可点击,我们一般会pw.setFocusable(true),但是当我们这样设置之后,问题出现了,按返回键或者menu菜单键没有反应,这是原因呢? PopupWindow 跟我们的 Activity 不一样,因为我们在构造 PW 的时候往往不是继…

上班骚扰男同事被抓到......

1 不同年代的辞职理由&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 月壤不能种菜太让人失望了▼3 原来&#xff0c;我也努力过▼4 忘了上班还有监控&#xff08;作者来源最右&#xff0c;ID&#xff1a;8943090 &#xff09;▼5 这是台风被黑的最惨的一次&…

mysql8 修改权限_MySQL8修改重置root密码,远程连接权限设置

MySQL8 修改重置root密码这里要单独强调是MySQL8&#xff0c;因为在MySQL 8.04前&#xff0c;执行&#xff1a;SET PASSWORDPASSWORD([新密码]);可行&#xff0c;但是MySQL8.0.4开始&#xff0c;这样默认是不行的。因为之前&#xff0c;MySQL的密码认证插件是“mysql_native_pa…

.NET 6新特性试用 | DateOnly和TimeOnly类型

前言在.NET 6之前&#xff0c;没有方法来直接表示没有时间的日期&#xff08;比如生日&#xff09;或者没有日期的一天中的时间&#xff08;比如闹钟&#xff09;。虽然我们可以使用DateTime类和TimeSpan类来代替&#xff0c;但是实际使用中会存在一些问题&#xff1a;var date…

用wordpress制作网站的总结

在没有自己的网站的时候很像拥有一个属于自己的网站&#xff0c;可以说是自己的一个愿望吧。但是当我真正的运行起来了之后觉得没有多么的兴奋&#xff0c;自己也折腾了几天wordpress,从买域名空间&#xff0c;到安装WP&#xff0c;遇到了一些问题&#xff0c;自己到处搜索答案…

解析super-smack的smack文件

Super-smack是一款强大的数据库压测工具&#xff0c;现在支持mysql和PostgreSQL两种数据库&#xff0c;你可以通过简单的配置文件(.smack)来生成一系列测试环境&#xff1a;测试数据&#xff0c;测试表&#xff1b;在测试的过程中&#xff0c;你可以控制客户端的并发数量以及执…

JSP是不是Java发展史上的一大败笔?

JSP一个年代传奇人物&#xff0c;它的诞生成果了网络的三国鼎立的局势&#xff0c;可是&#xff0c;几年的结构的风烟席卷&#xff0c;让JSP逐渐淡出这个前史舞台&#xff0c;有人不由宣布这样的感叹&#xff0c;JSP是不是Java开展史上的一大败笔呢&#xff1f; 查询样本 让咱们…

Android之使用PopupWindow使用和总结

不废话,先爆照 说明: 那个灰色背景是不能滑动里ListView里面的内容的 第一步:我们需要背景view 下面是我的background.xml文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/t…

Cell发文!施一公科研团队取得重大突破

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;科学网&#xff08;有删减&#xff09;北京时间2020年12月29日凌晨0时&#xff0c;《细胞》&#xff08;Cell&#xff09;发表中科院院士、西湖大学校长施一公课题组的一项新研究。研究首次报道了γ-分泌酶&#xff…

MAUI 跨平台播客应用程序(Conf 2021)

介绍在.NET Conf 2021大会上&#xff0c;微软展示了基于.NET6 跨平台应用程序, 具有ASP.NET Core、Blazor、.NET MAUI、微服务等功能。浏览由 ASP.NET Core 和 Blazor 提供支持的 .NET Podcasts 应用的实时运行版本&#xff1a;https://dotnetpodcasts.azurewebsites.net/项目体…

mysql enum_MySQL数据库中关于ENUM类型的详细解释

MySQL数据库中&#xff0c;因为工作的需求&#xff0c;我们可能会用到ENUM类型&#xff0c;但是由于此类型不是很常用&#xff0c;我们可能对其也不是很了解。没关系&#xff0c;本文我们就对ENUM类型做一些详细的解释&#xff0c;希望能够对您有所帮助。ENUM类型是一个字符串对…

Linux系统新手学习的11点建议

随着Linux应用的扩展许多朋友开始接触Linux&#xff0c;根据学习Windwos的经验往往有一些茫然的感觉&#xff1a;不知从何处开始学起。这里介绍学习Linux的一些建议。 一、从基础开始&#xff1a;常常有些朋友在Linux论坛问一些问题&#xff0c;不过&#xff0c;其中大多数的问…

Android之如何实现通讯录的搜索并且让匹配到的数据变颜色

不废话,先爆照 第一步:实现搜索 已经实现了通讯录功能,但是需要搜索,可以支持中文名字搜索,写入电话号码搜索,还有名字拼音,以及名字第一个字的首字母来搜索,这里介绍名字搜索,然后数据是我们公司TCL(020)所有员工的信息,目前还没有写到后…

复习一下日志等级类型

linux操作系统的日志有多种信息等级类型&#xff0c;今天好好复习一下&#xff1a; 1、info&#xff1a;信息说明&#xff1b; 2、notice&#xff1a;较info更需注意的信息&#xff1b; 3、warning&#xff08;warn&#xff09;&#xff1a;和现实生活中的warning不同&#xff…

mysql映射超_Hibernate的映射类型 hibernate mysql映射类型

(转)http://blog.csdn.net/zxy_snow/article/details/7214222Hibernate的映射类型 hibernate mysql映射类型1、Hibernate的映射类型 hibernate mysql映射类型Hibernate 映射类型Java 类型标准 SQL 类型大小和取值范围integer 或者 intint 或者 java.lang.IntegerINTEGER4 字节l…

dotnet 将自动代码格式化机器人带入团队 GitLab 平台

给团队带入一个 代码格式化机器人 能提升团队的幸福度&#xff0c;让团队的成员安心写代码&#xff0c;不用关注代码格式化问题&#xff0c;将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间&#xff0c;让更多的时间投入到更有价值的工作上本文…

Notion,我来,语雀,有道等几个云笔记

最近打算放弃wolai产品的使用&#xff0c;所以有必要总结一下这些年用过的那些笔记。从最早开始用Evernote&#xff0c;然后麦库&#xff0c;为知&#xff0c;然后有道&#xff0c;onenote&#xff0c;一直到Notion&#xff0c;我来&#xff0c;语雀等等&#xff0c;都有各自的…

玩转Javascript 给JS写测试

给js写测试已经不是什么稀奇的事情了&#xff0c;最近项目里用了jasmine和JsTestDriver两种js测试框架。JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD风格的开发。当在项目中配置好JsTestDriver以后&#xff0c;如同junit测试java文件一般&am…

Android 之自定义view实现水波纹效果

在实际的开发中&#xff0c;很多时候还会遇到相对比较复杂的需求&#xff0c;比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果&#xff0c;兴致高昂的来找你&#xff0c;看了之后目的很明确&#xff0c;当然就是希望你能给她&#xff1b; 在这样的关键时候&#xff0c;身子板就一…