鸿蒙开发-UI-图形-绘制几何图形

本文介绍了鸿蒙开发中UI组件的图形绘制功能,包括Shape组件、SVG效果、图形组件接口如Circle、Ellipse等,以及形状视口的使用和自定义样式。通过实例展示了如何绘制图形和使用形状视口进行缩放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鸿蒙开发-UI-组件

鸿蒙开发-UI-组件2

鸿蒙开发-UI-组件3

鸿蒙开发-UI-气泡/菜单

鸿蒙开发-UI-页面路由

鸿蒙开发-UI-组件导航-Navigation

鸿蒙开发-UI-组件导航-Tabs

鸿蒙开发-UI-图形-图片

文章目录

前言

一、绘制组件

二、形状视口

三、自定义样式

四、使用场景

总结


前言

上文详细学习了鸿蒙开发UI图片显示相关知识,学习了图片资源加载的两种类型,以及矢量图的显示,同时学习了图片渲染组件的相关属性和相关事件的使用方式和效果。本文将学习鸿蒙开发UI图形绘制

一、绘制组件

绘制组件用于在页面绘制图形,Shape组件是绘制组件的父组件,父组件中会描述所有绘制组件均支持的通用属性

创建绘制组件有两种方式

方式一:绘制组件使用Shape作为父组件,实现类似SVG的效果

Shape(value?: PixelMap)

该接口用于创建带有父组件的绘制组件,其中value用于设置绘制目标,可将图形绘制在指定的PixelMap对象中,若未设置,则在当前绘制目标中进行绘制

方式二:绘制组件单独使用,用于在页面上绘制指定的图形

图像组件接口调用
Circle(圆形)Circle(options?: {width?: string | number, height?: string | number}
Ellipse(椭圆形)Ellipse(options?: {width?: string | number, height?: string | number})
Line(直线)Line(value?: {width?: string | number, height?: string | number})
Polyline(折线)Polyline(value?: {width?: string | number, height?: string | number})
Polygon(多边形)Polygon(value?: {width?: string | number, height?: string | number})
Path(路径)Path(value?: { width?: number | string; height?: number | string; commands?: string })
Rect(矩形)

Rect(value?: {width?: string | number,height?: string | number,radius?: string | number | Array<string | number>} |

{width?: string | number,height?: string | number,radiusWidth?: string | number,radiusHeight?: string | number})

二、形状视口

形状视口viewport:指定用户空间中的一个矩形,该矩形映射到为关联的 SVG元素建立的视区边界

viewport属性的值包含x、y、width和height四个可选参数,x 和 y 表示视区的左上角坐标,width和height表示其尺寸

通过形状视口对图形进行放大与缩小实例

三、自定义样式

绘制组件支持通过各种属性对组件样式进行更改

四、使用场景

绘制一个直径为150的圆,和一个直径为150、线条为红色虚线的圆环


总结

本文学习了鸿蒙开发UI显示图形关于几何图形绘制的相关知识,了解了相关图形绘制组件以及两种绘制方式,同时学习了形状视口来做图形的缩放效果,下文将学习使用画布绘制自定义图形

### 鸿蒙系统画布 API 使用教程及功能介绍 #### 1. Canvas 组件概述 在 HarmonyOSUI 开发中,`Canvas` 是一种用于绘制自定义图形的核心组件。通过 `Canvas`,开发者能够实现复杂的绘图操作,例如线条、矩形、圆形以及更高级的路径和图像处理[^1]。 #### 2. 获取上下文环境 为了使用 `Canvas` 进行绘图,首先需要获取其上下文对象。这通常通过调用 `getContext('2d')` 方法完成。该方法返回一个 `CanvasRenderingContext2D` 对象,此对象提供了丰富的绘图接口[^2]。 以下是基本代码示例: ```javascript // 假设已有一个名为 canvas 的 Canvas 组件实例 let context = canvas.getContext('2d'); if (!context) { console.error("无法获取 Canvas 上下文"); } ``` #### 3. 基本绘图操作 利用 `CanvasRenderingContext2D` 提供的功能,可以执行多种基础绘图任务: - **绘制直线** 调用 `moveTo(x, y)` 和 `lineTo(x, y)` 定义线段起点与终点,并通过 `stroke()` 渲染。 ```javascript context.beginPath(); context.moveTo(50, 50); context.lineTo(150, 150); context.stroke(); // 显示线条 ``` - **绘制矩形** 可以使用 `rect(x, y, width, height)` 创建矩形轮廓,或者直接填充或描边。 ```javascript context.fillStyle = 'blue'; // 设置填充颜色 context.fillRect(20, 20, 80, 50); // 填充矩形 context.strokeStyle = 'red'; // 设置描边颜色 context.strokeRect(120, 20, 80, 50); // 描边矩形 ``` - **绘制圆弧/椭圆** 圆形可以通过 `arc(x, y, radius, startAngle, endAngle)` 实现;而椭圆则需借助 `ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle)`。 ```javascript context.beginPath(); context.arc(100, 75, 50, 0, Math.PI * 2); // 参数依次为中心坐标、半径、起始角度、结束角度 context.closePath(); context.fill(); // 填充圆形 ``` #### 4. 图像加载与渲染 除了几何形状外,还可以将外部图片资源导入到 `Canvas` 中显示。具体方式如下所示: ```javascript let image = new Image(); image.src = 'path/to/image.png'; image.onload = function() { context.drawImage(image, 0, 0, 200, 100); // 将图片缩放到指定大小并放置于目标位置 }; ``` #### 5. 文字绘制支持 对于文字内容的支持也是不可或缺的一部分。设置字体样式后即可轻松添加文本至画布之上。 ```javascript context.font = 'italic bold 20px sans-serif'; // 字体属性配置 context.textAlign = 'center'; // 水平对齐模式 context.fillText('Hello HarmonyOS', 100, 100); // 添加一段字符串 ``` 以上便是关于 HarmonyOS 下基于 Canvas 的一些常见应用场景及其对应的操作指南[^3][^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值