Socket
Book a DemoInstallSign in
Socket

@ohmi/art

Package Overview
Dependencies
Maintainers
7
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ohmi/art

> 模板版本:v0.2.2

15.0.0-0.7.1-rc.1.0.4
latest
npmnpm
Version published
Maintainers
7
Created
Source

模板版本:v0.2.2

@ohmi/art

Supported platforms License

[!TIP] Gitee 地址

介绍

该项目基于react-native-svg开发。

安装与使用

npm

npm install @ohmi/art

yarn

yarn add @ohmi/art

下面的代码展示了这个库的基本使用场景:

[!WARNING] 使用时 import 的库名不变。

// @flow
import React from 'react';
import {StyleSheet, Dimensions} from 'react-native';
import {
  Surface,
  Shape,
  Group
} from '@react-native-community/art';

const HEART_SHAPE = 
'M 10,30 A 20,20 0,0,1 50,30 A 20,20 0,0,1 90,30 Q 90,60 50,90 Q 10,60 10,30 z';

const App = () => {
  return (
    const surfaceDimensions = Dimensions.get('window').width;

    return (
      <Surface
        width={surfaceDimensions}
        height={surfaceDimensions / 2}
        style={styles.surface}>
        <Group
          x={surfaceDimensions / 2 - 50}
          y={surfaceDimensions / 4 - 50}
          visible={true}>
          <Shape
            d={HEART_SHAPE}
            strokeWidth={5}
            stroke={'#00ff00'}
            visible={true}
          />
        </Group>
      </Surface>
    );
  );
};

export default App;

const styles = StyleSheet.create({
  surface: {
    backgroundColor: 'black',
  }
});

本库 HarmonyOS 侧实现依赖@react-native-oh-tpl/react-native-svg 的原生端代码,如已在 HarmonyOS 工程中引入过该库,则无需再次引入,可跳过本章节步骤,直接使用。

如未引入请参照react-native-svg-capi 进行引入

属性

[!TIP] "Platform"列表示该属性在原三方库上支持的平台。

[!TIP] "HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。

Surface:绘图元素容器(组件)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
widthstring | number0盒子的宽,支持百分比All
heightnumber0盒子的高,不支持百分比All

Group:多个图形和文本元素组合在一起(组件)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
widthnumber0N
heightnumber0N

Text:文本(组件)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
fontstring属性的值是一个字符串,格式为 "font-weight font-size font-family"1.font-weight:只支持 normal 和 bold,不支持其他样式(如 italic)。 2.font-size 的单位是像素(px),不能使用其他单位(如 % 或 em)。 3.font-family 必须是系统支持的字体或已导入的自定义字体。All
alignmentstringleft用于控制文本的对齐方式1.left:文本将从指定的(0,0) 坐标开始,向左对齐。 2.center:文本将从指定的(0,0) 坐标开始,居中对齐。 3.right:文本将从指定的 (0,0) 坐标开始,向右对齐。All
fillstring | LinearGradient | RadialGradient用于控制文本的颜色如 #000,red,LinearGradient 注:0.61上的RadialGradient对象不生效,0.72上修复了这个bug,可以生效All
strokestring设置文本的描边颜色All
strokeWidthnumber1设置描边的宽度(单位为像素)All
strokeCapstringround设置描边端点的样式。1.butt:描边端点是平的。 2.square:描边端点是方形的。 3.round:描边端点是圆形的。 注:需要搭配strokeDash使用才可以看出效果All
strokeDashArray设置描边的虚线样式例如:[10, 5] 表示绘制 10 像素的实线,然后绘制 5 像素的空白,如此循环。All
strokeJoinstringmiter设置描边连接处的样式。1.bevel:连接处是斜面的。 2.miter:连接处是尖锐的。 3.round:连接处是圆形的。All

Path:路径绘制(类)

方法名称参数描述说明支持平台HarmonyOS 支持HarmonyOS 支持
movedx:x 轴方向的偏移量 dy:y 轴方向的偏移量相对坐标移动将路径的起点从当前位置沿着 x 轴和 y 轴方向移动偏移量 dx 和 dy。All
moveTox:移动到的目标 x 坐标。 y:移动到的目标 y 坐标。绝对坐标移动将路径的起点移动到指定的绝对坐标 (x, y)。All
linedx:x 轴方向的距离 dy:y 轴方向的距离相对坐标绘制直线从当前路径的起点绘制一条直线,移动距离为 dx 和 dy。All
lineTox:绘制到的目标 x 坐标。 y:绘制到的目标 y 坐标。绝对坐标绘制直线从当前路径的起点绘制一条直线到指定的坐标All
curvec1x (number): 第一个控制点的 x 坐标。 c1y (number): 第一个控制点的 y 坐标。 c2x (number): 第二个控制点的 x 坐标。 c2y (number): 第二个控制点的 y 坐标。 ex (number): 结束点的 x 坐标(相对于当前点的偏移量)。 ey (number): 结束点的 y 坐标(相对于当前点的偏移量)相对坐标绘制贝塞尔曲线curve 方法使用相对坐标来指定结束点的位置,即结束点的坐标是相对于当前点的偏移量。 2个参数:(dx, dy) 绘制一条直线,从当前点到 (当前点 + dx, 当前点 + dy)。 3个参数:(c1x, c1y, ex) 绘制一条二次贝塞尔曲线,使用一个控制点。 ex = ex,ey = 整个坐标系y 0 4个参数:(c1x, c1y, ex, ey) 绘制一条二次贝塞尔曲线,使用一个控制点。 5个参数:(c1x, c1y, c2x, c2y, ex) 绘制一条三次贝塞尔曲线,使用俩个控制点。ex = ex,ey = 整个坐标系y 0 6个参数:(c1x, c1y, c2x, c2y, ex, ey) 绘制一条三次贝塞尔曲线,使用俩个控制点。 注:curve使用1个参数会报错All
curveToc1x (number): 第一个控制点的 x 坐标。 c1y (number): 第一个控制点的 y 坐标。 c2x (number): 第二个控制点的 x 坐标。 c2y (number): 第二个控制点的 y 坐标。 ex (number): 结束点的 x 坐标(绝对坐标)。 ey (number): 结束点的 y 坐标(绝对坐标)绝对坐标绘制贝塞尔曲线curveTo 方法使用绝对坐标来指定结束点的位置,即结束点的坐标是相对于整个坐标系的。 2个参数:(dx, dy) 绘制一条直线,从当前点到 (整个坐标系的dx, 整个坐标系的dy)。 4个参数:(c1x, c1y, ex, ey) 绘制一条二次贝塞尔曲线,使用一个控制点。 6个参数:(c1x, c1y, c2x, c2y, ex, ey) 绘制一条三次贝塞尔曲线,使用俩个控制点。 注:curveTo使用1个参数,3个参数或5个参数会报错All
arcx (number): 终点的 x 坐标,相对于当前点的偏移量。 y (number): 终点的 y 坐标,相对于当前点的偏移量。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) counterClockwise (boolean): 是否逆时针绘制弧线。true 表示逆时针,false 表示顺时针。 rotation (number): 旋转角度。相对坐标绘制弧线使用一个参数会报错All
arcTox (number): 终点的 x 坐标,相对于整个坐标系的值。 y (number): 终点的 y 坐标,相对于整个坐标系的值。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) counterClockwise (boolean): 是否逆时针绘制弧线。true 表示逆时针,false 表示顺时针。 rotation (number): 旋转角度。绝对坐标绘制弧线使用一个参数会报错All
counterArcx (number): 终点的 x 坐标,相对于当前点的偏移量。 y (number): 终点的 y 坐标,相对于当前点的偏移量。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧)相对坐标绘制弧线counterArc: function(x, y, rx, ry, outer){ return this.arc(x, y, rx, ry, outer, true); } 经过观察源码,发现只是将arc的第六个参数counterClockwise使用逆时针进行使用而已,且只有5个参数值,用法与效果与arc5个参数效果一致All
counterArcTox (number): 终点的 x 坐标,相对于整个坐标系的值。 y (number): 终点的 y 坐标,相对于整个坐标系的值。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧)绝对坐标绘制弧线counterArcTo: function(x, y, rx, ry, outer){ return this.arcTo(x, y, rx, ry, outer, true); } 经过观察源码,发现只是将arc的第六个参数counterClockwise使用逆时针进行使用而已,且只有5个参数值,用法与效果与arcTo5个参数效果一致All
close闭合路线All
reset重置路径All
initializePath对象克隆Path相关路径All

Shape:创建和渲染矢量图形(组件)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
dstring | Path对象SVG格式的字符串 或者new Path()的对象All
heightnumber盒子的高。 不知道有啥用,源码上有这个属性,但显示的内容,大小是根据d这个属性来决定的All
widthnumber盒子的高。 不知道有啥用,源码上有这个属性,但显示的内容,大小是根据d这个属性来决定的All
fillstring | LinearGradient | RadialGradient用于控制文本的颜色如 #000,red,LinearGradient 注:0.61上的RadialGradient对象不生效,0.72上修复了这个bug,可以生效All
strokestring设置文本的描边颜色All
strokeWidthnumber1设置描边的宽度(单位为像素)All
strokeCapstringround设置描边端点的样式。1.butt:描边端点是平的。 2.square:描边端点是方形的。 3.round:描边端点是圆形的。All
strokeDashArray设置描边的虚线样式例如:[10, 5] 表示绘制 10 像素的实线,然后绘制 5 像素的空白,如此循环。All
strokeJoinstringmiter设置描边连接处的样式。1.bevel:连接处是斜面的。 2.miter:连接处是尖锐的。 3.round:连接处是圆形的。All

ClippingRectangle:图形裁剪(组件)0.61不支持

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
widthnumber0盒子的宽N
heightnumber0盒子的高N

LinearGradient:线性渐变填充(构造函数,下列是参数列表)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
stopstype GradientStops = {[key: string]: ColorType} | Array;渐变的颜色停止点数组All
x1number渐变起始点的 x 坐标All
y1number渐变起始点的 y 坐标All
x2number渐变结束点的 x 坐标All
y2number渐变结束点的 y 坐标All

RadialGradient:径向渐变填充(构造函数,下列是参数列表)0.61没有效果

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
stopstype GradientStops = {[key: string]: ColorType} | Array;渐变的颜色停止点数组N
fxnumber0.5渐变焦点的 x 坐标N
fynumber0.5渐变焦点的 y 坐标N
rxnumber0.5渐变外环的 x 半径N
rynumber0.5渐变外环的 y 半径N
cxnumber0.5渐变中心点的 x 坐标N
cynumber0.5渐变中心点的 y 坐标N

Transform:图形进行变换操作(构造函数,下列是参数列表)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
xxnumber1X轴方向的缩放因子。All
yxnumber0Y轴方向的倾斜因子(相对于X轴)。All
xynumber0X轴方向的倾斜因子(相对于Y轴)。All
yynumber1Y轴方向的缩放因子。All
xnumber0X轴方向的平移距离。All
ynumber0Y轴方向的平移距离。
方法名称参数描述说明是否必需支持平台HarmonyOS 支持
transformxx yx xy yy x y用法与new Transform(...arg) 一致All
translatex y沿X | Y轴的平移距离。正值向右移动,负值向左移动。All
movex y与translate用法一致All
moveTox y与translate用法一致All
scalexx yy缩放比例。大于1表示放大,小于1表示缩小。All
rotatedeg 旋转角度 x 旋转的中心点x轴 y 旋转的中心点y轴All
rotateTodeg 旋转角度 x 旋转的中心点x轴 y 旋转的中心点y轴与rotate用法一致All

公共属性:Common props 组件属性 HarmonyOS 侧支持情况(Surface与ClippingRectangle不生效,shadow系列的属性仅对Text和Shape组件生效)

属性名称类型默认值描述说明是否必需支持平台HarmonyOS 支持
opacitynumber1透明度(0-1)All
originXnumber0原点 X 坐标需搭配rotation使用All
originYnumber0原点 Y 坐标需搭配rotation使用All
rotationnumber0旋转角度All
scaleXnumber1X 轴方向的缩放比例All
scaleYnumber1Y 轴方向的缩放比例All
scalenumber1统一缩放比例(同时影响 X 轴和 Y 轴)All
xnumber0横坐标位移All
ynumber0纵坐标位移All
visiblebooleantrue是否可见All
shadowColorstring#000设置阴影的颜色All
shadowOffsetobject{ x: 0, y: 0 }设置阴影的偏移量包含 x 和 y 两个属性,分别表示水平和垂直方向的偏移量。All
shadowOpacitynumber1设置阴影的透明度All
shadowRadiusnumber0设置阴影的模糊半径,值越大阴影越模糊。目前72上面这个属性不生效(OS底层暂时不支持)

FAQs

Package last updated on 20 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.