资讯专栏INFORMATION COLUMN

react-native-art-绘图入门

raise_yang / 1860人阅读

摘要:在中是个非常重要的库,它让非常酷炫的绘图及动画变成了可能。于是决定出这样一份入门文档及可能遇到的坑,希望能够帮助到大家。右键点击项目选择将添加到基础组件暴露的组件有个,这篇用到的有五个。

在React Native中ART是个非常重要的库,它让非常酷炫的绘图及动画变成了可能。但是可能是知道的人真的不多导致文档及少中文更少。很多都是把英文的参数列表翻译过来,也没有案例。于是决定出这样一份入门文档及可能遇到的坑,希望能够帮助到大家。本文的示例工程https://github.com/xu-duqing/React-Native-ART-Sample

添加依赖

Android默认就包含ART库,IOS需要多带带添加依赖库。

右键点击项目 -> ‘Add Files to ProjectName -> 选择 node_modules/react-native/React/Libraries/ART/ART.xcodeproj’

将 libART.a 添加到 Linked Frameworks and Libraries

基础组件

ART暴露的组件有7个,这篇用到的有五个。先介绍即将用到的四个组件,之后在介绍另外三个。

Surface - 一个矩形可渲染的区域,是其他元素的容器!

Group - 可容纳多个形状、文本和其他的分组

Shape - 形状定义,可填充

Text - 文本形状定义

props

Surface

width : 渲染区域的宽

height : 定义渲染区域的高

Shape

d : 定义绘制路径

stroke : 描边颜色

strokeWidth : 描边宽度

strokeDash : 定义虚线

fill : 填充颜色

Text

funt : 字体样式,定义字体、大小、是否加粗 如: bold 35px Heiti SC

Path

moveTo(x,y) : 移动到坐标(x,y)

lineTo(x,y) : 连线到(x,y)

arc() : 绘制弧线

close() : 封闭空间

绘制直线

了解Path的moveTo和LineTo的使用,注意Surface的高度和宽度,多数没有绘制出想要的都是因为渲染区域定义问题

示例
import React from "react"
import {
    View,
    ART
} from "react-native"

export default class Line extends React.Component{

    render(){

        const path = ART.Path();
        path.moveTo(1,1); //将起始点移动到(1,1) 默认(0,0)
        path.lineTo(300,1); //连线到目标点(300,1)

        return(
            
                
                    
                
            
        )
    }
}
绘制虚线

了解strokeDash的参数,

[10,5] : 表示绘10像素实线在绘5像素空白,如此循环
[10,5,20,5] : 表示绘10像素实线在绘制5像素空白在绘20像素实线及5像素空白

示例
import React from "react"
import {
    View,
    ART
} from "react-native"

const {Surface, Shape, Path} = ART;

export default class DashLine extends React.Component{

    render(){

        const path = Path()
            .moveTo(1,1)
            .lineTo(300,1);

        return(
            
                
                    
                
            
        )
    }
}
绘制矩形

了解close()的使用,close的意思是创建一个密闭的路径。首先通过lineTo绘制三条边,在使用close链接第四条边。fill做颜色填充

示例
import React from "react"
import {
    View,
    ART
} from "react-native"

const {Surface, Shape, Path} = ART;

export default class Rect extends React.Component{

    render(){

        const path = new Path()
            .moveTo(1,1)
            .lineTo(1,99)
            .lineTo(99,99)
            .lineTo(99,1)
            .close();

        return(
            
                
                    
                
            
        )
    }
}
绘圆

了解arc(x,y,radius)的使用, 终点坐标距离起点坐标的相对距离

示例
import React from "react"
import {
    View,
    ART
} from "react-native"

const {Surface, Shape, Path} = ART;

export default class Circle extends React.Component{

    render(){

        const path = new Path()
            .moveTo(50,1)
            .arc(0,99,25)
            .arc(0,-99,25)
            .close();


        return(
            
                
                    
                
            
        )
    }
}
绘制文字

了解funt属性的使用,规则是“粗细 字号 字体”

注意: 字体应该是支持path属性的,应该是实现bug并没有不生效。 Android通过修改源码是可以解决的,IOS没看源码。

示例
import React from "react"
import {
    View,
    ART
} from "react-native"

const {Surface, Text, Path} = ART;

export default class ArtText extends  React.Component{


    render(){

        return(
            
                
                    Swipe
                
            
        )
    }

}
绘制扇形

这里使用的是react-art中封装的一个组件地址,内部还是使用arc做路径绘制,感兴趣的同学可以阅读一下代码

示例
import React from "react"
import {
    View,
    ART
} from  "react-native"

const {Surface} = ART;
import Wedge from "./Wedge"

export default class Fan extends  React.Component{

    render(){

        return(
            
                
                    

                
            
        )
    }
}
图层叠加

了解Group的使用

示例
"use strict";

import React from "react"
import {
    View,
    ART
} from "react-native"

const {Surface, Shape,Text, Path,Group} = ART;

export default class GroupTest extends React.Component{

    render(){

        const pathRect = new Path()
            .moveTo(1,1)
            .lineTo(1,99)
            .lineTo(99,99)
            .lineTo(99,1)
            .close();

        const pathCircle = new Path()
            .moveTo(50,1)
            .arc(0,99,25)
            .arc(0,-99,25)
            .close();

        const pathText = new Path()
            .moveTo(40,5)
            .lineTo(40,99);


        return(
            
                
                    
                        
                        
                        Swipe
                    
                
            
        )
    }
}

作者 大光 更多文章 | Github

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80106.html

相关文章

  • CAD小白初入门该怎么进行阶段性学习CAD?

    摘要:三学以致用在学习命令时始终要与实际应用相结合,把学以致用的原则贯穿整个学习过程。五循序渐进整个学习过程其实就是循序渐进的方式。 CAD小白初入门该怎么进行阶段性学习CAD?现在随着CAD的各种应用的普及,不管是建筑加工还是机械制造,都会运用得比较多,那么新手小白到底该如何学好CAD,进阶大神?下面小编就总结了几点,希望可以对大家有所用处哦!showImg(https://segment...

    Aomine 评论0 收藏0
  • GoJS 绘图 (一) :入门

    摘要:是一个库,让你轻松创建现代浏览器的交互图。支持图形化的模板和图形对象属性数据模型的数据绑定。许多预定义的工具和命令执行,大部分的图表所需要的标准的行为。外观和行为的定制是大多设置属性的问题。 GoJS是一个JavaScript库,让你轻松创建现代Web浏览器的交互图。 GoJS支持图形化的模板和图形对象属性数据模型的数据绑定。你只需要保存和恢复模型,包括持有任何性质的应用需求,简单的J...

    X_AirDu 评论0 收藏0
  • Python易学就会(三)turtle绘图入门--初级篇

    摘要:比如把上面画正方形的例子稍做变化重复执行次画正方形开始画正方形结束右转度执行后,可以看到,画出一个非常规整漂亮的组合图案。   turtle图形库源于1966年诞生的Logo语言,是入门Python的有趣工具。因其简单便捷的图形化方法、和立即反馈式的绘画效果,成为众多编程入门者的首选。相对于大多数入门教材中枯燥的语法学习,和函数、方法的演练来说,turtle的趣味性显得别具一格、极富效...

    周国辉 评论0 收藏0
  • 快速入门 Matplotlib 绘图

    摘要:概述是使用开发的一个绘图库,是界进行数据可视化的首选库。可以通过图形示例来快速浏览所有支持的图形。最后,调用把绘制好的图形显示出来。对应于三个参数,表示行,表示列,表示位置。因此,表示在图表中总共有个图形,当前新增的图形添加到位置。 showImg(https://segmentfault.com/img/bV6EPD?w=542&h=130); 概述 Matplotlib 是使用 P...

    Hujiawei 评论0 收藏0
  • Python易学就会(四)turtle绘图入门--高级篇

    摘要:也就是说明这个参数除了表示圆的半径面,其正负性还定义了画圆的方向。入门篇中有个小彩蛋,也就是可以修改的指针外形。通过初始化出多只新,可以同时在一个界面上以不同的绘图。下面给出一段绘制实时时钟的代码,重点部分我已给出注释。   到目前为止我们通过turtle库了解了Python的基本语法,包括顺序与循环、函数的调用与方法的定义、列表与简单的数学运算等;也学习了用turtle库绘图的基本用...

    Miracle 评论0 收藏0

发表评论

0条评论

raise_yang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<