首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一种方法可以迭代地绘制一些东西,以便新的绘制覆盖以前的绘制?

是的,可以使用HTML5的Canvas元素来实现迭代绘制。Canvas是HTML5新增的一个元素,它提供了一种通过JavaScript来绘制图形的方法。通过使用Canvas的绘图API,可以在网页上动态地绘制图形、动画和交互式内容。

要实现迭代绘制,可以使用Canvas的绘图上下文对象(context),通过调用其绘制方法来绘制图形。每次绘制完成后,可以保存当前的绘图状态,然后再进行下一次绘制,新的绘制会覆盖以前的绘制。

以下是一个简单的示例代码,演示了如何使用Canvas进行迭代绘制:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <title>Canvas迭代绘制示例</title>
</head>
<body>
    <canvas id="myCanvas" width="500" height="500"></canvas>

    <script>
        var canvas = document.getElementById("myCanvas");
        var context = canvas.getContext("2d");

        // 绘制第一次图形
        context.fillStyle = "red";
        context.fillRect(50, 50, 100, 100);

        // 保存当前绘图状态
        context.save();

        // 绘制第二次图形
        context.fillStyle = "blue";
        context.fillRect(100, 100, 100, 100);

        // 保存当前绘图状态
        context.save();

        // 绘制第三次图形
        context.fillStyle = "green";
        context.fillRect(150, 150, 100, 100);

        // 恢复到第二次绘图状态
        context.restore();

        // 绘制第四次图形
        context.fillStyle = "yellow";
        context.fillRect(200, 200, 100, 100);

        // 恢复到第一次绘图状态
        context.restore();

        // 绘制第五次图形
        context.fillStyle = "orange";
        context.fillRect(250, 250, 100, 100);
    </script>
</body>
</html>

在这个示例中,我们使用Canvas的绘图上下文对象context来绘制不同颜色的矩形。通过调用context的fillRect方法,可以绘制一个填充矩形。在每次绘制前,我们可以设置不同的绘图状态,如填充颜色,然后通过调用save方法保存当前的绘图状态。在需要恢复到之前的绘图状态时,可以调用restore方法。

这样,我们就可以通过迭代绘制的方式,实现新的绘制覆盖以前的绘制。当然,Canvas还提供了丰富的绘图API,可以实现更复杂的绘制效果和交互功能。

腾讯云相关产品和产品介绍链接地址:

以上是腾讯云提供的一些相关产品,可以根据具体需求选择适合的产品来支持云计算和开发工作。

相关搜索:转换外部数据集的日期/时间索引,以便pandas可以清晰地绘制有没有一种使用chart.js绘制浮动矩形的方法如何绘制颜色矢量?有没有不同的方法可以让我试试?有没有一种方法可以从规则分布的曲率值绘制二维曲线?有没有一种简单的方法可以在一个熊猫散点图上绘制多个序列?有没有一种方法可以简单地将所有这些向量绘制在一张图上?有没有一种方法可以在不绘制多余形状的情况下调整JFrame的大小?有没有一种方法可以高效地迭代Python中的“嵌套”组合?有没有一种方法可以使用Bokeh中的MultiSelect来选择绘制流数据的哪个通道?有没有一种方法可以绘制Matplotlib的Imshow,而不是改变x轴和y轴的限制?有没有一种方法可以操作文本文件中的数据,即改变值并绘制它们?有没有一种方法可以使用pyplot和pandas来绘制Python中只有特定值的所有列?有没有一种方便的方法来重新绘制实时数据的绘图(matlibplot,python2.7)?在堆叠折线图中,有没有一种方法可以堆叠多个Y轴以匹配每条绘制的线条?有没有一种方法可以在画布循环中制作图像并一遍又一遍地重新绘制自己?在p5.js中,有没有一种简单的方法来绘制一个透明的形状,而不需要将轮廓绘制到该形状上?有没有一种方法可以在不丢失用户先前输入点的情况下动态绘制从用户获取的点?(python)是否可以通过覆盖mouseDown和mouseUp事件并使用超类绘制方法来实现NSButton的子类化有没有一种方法可以在不考虑输入数据集的情况下在绘图的同一点绘制annotation_custom()?有没有一种简单的方法在Seaborn的同一个FacetGrid上绘制两个分类图?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity通用渲染管线(URP)系列(十一)——后处理(Bloom)

通过使用适当着色器简单绘制一个覆盖整个图像矩形,即可对整个图像应用效果。现在我们没有着色器,因此我们只需要复制到目前为止渲染任何内容到相机帧缓冲区即可。...摄像机清除标志设置为天空盒还是纯色都没关系,因为我们保证可以完全覆盖以前数据。但是其他两个选项不起作用。为防止出现随机结果,除非使用天空盒,否则当栈处于活动状态时,请始终清除深度并清除颜色。...1.5 Gizmos 目前,我们正在同时绘制所有gizmos,但是在FX前或者后渲染控件之间存在一些区别。因此,让我们将DrawGizmos方法一分为二。 ?...并引入一个bloom组合通道,以采样并添加两个纹理。和以前一样,我只展示片元程序代码,而不显示着色器通道或枚举项。 ? 上采样时使用Pass。 ? ? ?...降低成本一种简单方法是以一半分辨率生成它。由于效果很柔和,所以我们可以避免这种情况。这将改变效果外观,因为我们实际上是在跳过第一次迭代。 首先,在决定跳过bloom时,我们应该提前一步考虑。

5.2K10

人力成本有效节约35%以上,深度解读网易有道Flutter一码多端实践

嘉宾 | 张龑 编辑 | 马红伟 在大前端盛行行业背景下,利用跨端技术来快速迭代业务已经成为一种潜在趋势。...张龑:所有流畅体验感都来自于对细节处理,因为流畅感其实是人眼视角对屏幕绘制方法一种直观反馈。...可以想象一下,如果开发各端代码都是从组件库中直接拿来进行组装,开发成本无疑将会大大降低。  InfoQ:Web-App 一体化实现过程中,有没有遇到一些坑点?如何解决?代码可复用性是如何做?...除此之外,我们在做一体化过程还会遇到 background 覆盖绘制 CustomPainter、iframe 加载中刷新闪动等问题,不过随着 Flutter Web 正式版发布,这些问题都已经解决掉了...张龑:近年来随着互联网领头羊们大力推进,大前端时代确实已经呈现出一定势头,而且随着各种产品迭代更新以及框架不断优化升级,势必会成为业务最好助力,同时在探索业务方向上也能节约很多成本,此外很多语法上逐渐统一也在推动着很多移动端同学进行转型

1K10
  • Unity通用渲染管线(URP)系列(一)——自定义渲染管线(Taking Control of Rendering)

    所有的效果都需要按照正确顺序叠加到最后图像上,这就是我们说渲染管线所做事情。 在以前,Unity只支持一些内置方式来渲染物体。...在这种情况下,我们必须将剔除参数作为引用参数传递,方法是在前面写ref。 ? 为什么需要用ref? ref关键字工作方式与out一样,只不过该方法不需要为其分配东西。...常见不透明排序选项还需要考虑了其他一些标准,包括渲染队列和材质。 2.7 分开绘制不透明和透明物体 帧调试器向我们展示透明对象会被绘制,但是Skybox会被绘制到不透明对象前面的所有东西前面。...如果让Skybox在不透明几何图形之后绘制,就可以跳过所有隐藏片段,但是它又会覆盖透明几何图形。这是因为透明着色器不会写入深度缓冲区。他们不会隐藏他们身后任何东西,因为我们需要看穿它们。...3 编辑器渲染 自定义RP正确绘制了Unlit对象,但我们还可以一些事情来改进在Unity编辑器中使用。

    17.2K136

    Unity通用渲染管线(URP)系列(十六)——渲染缩放(Scaling Up and Down)

    最后一种方法也称为SSAA,代表超采样抗锯齿。 1.1 缓冲设置 调整渲染比例会影响缓冲区大小,因此我们将为CameraScaleSettings添加渲染比例可配置滑块。...你可以放大游戏窗口,以便更好查看单个像素,这使得调整后渲染比例更加明显。 ? (没有Post FX 渲染缩放为1 Game 窗口放大) 小渲染比例会加快渲染速度,同时降低图像质量。...还添加一个渲染比例模式,可以通过内部RenderScaleMode枚举类型将其设置为继承,乘法或覆盖。 ? ?...但是,在最后DrawCall期间重新缩放会带来一些不利影响。 2.1 当前方法 我们当前重新缩放方法会产生不希望副作用。...如果它们相等,我们将像以前一样绘制最终Pass,现在以Pass.Final作为参数显式绘制。 ? 但是,如果需要重新缩放,则必须绘制两次。首先获得一个与当前缓冲区大小匹配临时渲染纹理。

    4.5K20

    JavaScript 编程精解 中文第三版 十九、项目:像素艺术编辑器

    应用状态由当前图片,所选工具和所选颜色组成。 我们将建立一些东西以便状态存在于单一值中,并且界面组件总是基于当前状态下他们看上去样子。...为此,该类有draw方法,接受更新后像素(具有x,y和color属性对象)数组,并创建一个覆盖这些像素图像。...我们将允许界面将动作分派为对象,它是属性覆盖先前状态属性。当用户改变颜色字段时,颜色字段可以分派像{color: field.value}这样对象,从这个对象可以计算出一个状态。...对于每个到达像素,我们必须看看任何相邻像素是否颜色相同,并且尚未覆盖。 随着像素添加,循环计数器落后于绘制完成数组长度。 任何前面的像素仍然需要探索。...找到一种方法,通过重新绘制实际更改像素,使PictureCanvassetState方法更快。

    3K10

    使用 Python 和 Pygame 制作游戏:第一章到第五章

    它们都可以被调用来执行其中代码。函数和方法之间区别在于方法总是附加到一个对象上。通常方法会改变关于那个特定对象某些东西(您可以将附加对象看作是传递给方法一种永久参数)。...如果你玩过记忆迷题游戏,你会注意到在游戏开始时,所有的方块都会被快速随机覆盖和揭示,以便玩家偷看哪些图标在哪些方块下。...在这个for循环内部,代码应该做三件事:绘制背景颜色(覆盖之前任何东西),绘制图标,然后绘制所需白色方块覆盖在图标上。leftTopCoordsOfBox()函数将返回方块左上角像素坐标。...第 234 行fill()方法完全覆盖以前在显示表面对象上绘制任何东西,这样我们就可以从头开始。 第 235 到 237 行处理在窗口顶部绘制消息。...在从第 198 行开始每次循环迭代中,整个显示表面都必须重新绘制(与越来越不透明背景颜色混合,直到背景完全被新颜色覆盖)。

    1.2K10

    iOS 页面渲染 - 离屏渲染

    zhangferry:最近在研究什么有趣东西?是否可以透露下未来几篇文章规划? 最近在做优化方面的事情,未来几篇文章可能会偏向优化系列或者底层相关。...有没有什么好学习方法可以分享?...学习方法:说一点吧,我自己对于技术态度是实践型 + 更优解,当看到一些文章时候,会自己将文章里面的原理或者实现自己动手实践一下,考虑这个方法有什么缺点,并围绕这个技术点去思考有没有更好解决方案...离屏渲染产生逻辑 图层叠加绘制大概遵循画家算法,在这种算法下会按层绘制,首先绘制距离较远场景,然后用绘制距离较近场景覆盖较远部分。...画家算法 在普通 layer 绘制中,上层 sublayer 会覆盖下层 sublayer,下层 sublayer 绘制完之后就可以抛弃了,从而节约空间提高效率。

    2K30

    以什么样姿势来学Matplotlib库

    ,我对图形要求变高,(其实是,需求太古怪,没有现成作业可以抄了,只能自己写了),那这个首选学习资料就是官网了,以前不回看这个东西,现在学东西多了,反过来看这个东西,嘿!...下面就是plot函数了: 有没有发现一个小东西,*,这个是什么意思? 一个*代表后面的参数都必须赋值传参,也就是age=1方式赋值, 否则报错!...使用[],来定位要绘制位子哈 那可以看看两个子图和四个子图设置方法,ax这个无所谓就是个名字而已,但是还是建议写这个。 对于子图来说,都是一个坐标轴里面,那这个轴共用不?...绘制方法就是这样 真的是太丰富了,都学完就大佬了 我们来看一个最常见函数,plot,也是我们学习起点。...plot(x, y[:, col]) 解包是这样 Look 或是直接给 还有一种将多个绘制图像放在一起

    17320

    【专家答疑】疯狂Android

    不过有一些特定图形、图像特效,还需要一定数学基础知识。 关于自定义组件,不管看上去多么”酷炫“,其实无非是2个东西: 1. 用户交互。 2. 图形、图像绘制和变换。...——如果你没有自己掌握图形、图像绘制,想做好看自定义控件,几乎是不可能;反过来,如果你图形、图像绘制掌握好了,那么你可以想把控件绘制成怎样,就绘制成怎样,一切都是你自己做主。...当你对某个功能感到迷惑时,你可以通过IDE工具提供步入功能来跟踪程序调用关系,跟踪各个方法之间层次关系、方法实现,这样根据分功能查看源代码。...这样不会让你产生茫然无措感觉,而且你日积月累坚持,时间长了,慢慢很多东西都会有较好了解。...如果一个IT从业员,有没有必要学习这么多? A:其实大家看到我能写出书部分,只是我小部分而已。 实际上,以前还做过vfp、vb、asp、pb、C之类开发。

    56420

    一文 get 入门 canvas 最佳路径

    而每次调用这个方法之后,列表都会被重置,然后就可以绘制图形。...(100, 25); //绘制到这个位置一条线 ctx.fill(); //填充图形,默认就制动结束路径了 在这个过程中,有一个比较有用函数,moveTo,这个函数实际上画不出来任何东西,它是属于上面描述路径列表一部分...我们也能够使用 moveTo()绘制一些不连续路径。 这个时候你可以想象一下在纸上画东西,笔尖从一个点到另一个点移动过程。这个过程模式叫做笔式绘图仪模式。...第一反应就是 isPointInPath,或者是迭代所有图形,拿鼠标的点去与图形点碰撞检测,这个方法可以用,但是适用场景比较少,还有就是性能开销比较大,如果图形太多,每一个都需要经过计算,那么这个交互会变得非常不友好...有没有其他方案了,在游戏界有一个普遍使用方案——包围盒,什么是包围盒呢?我们以上面的图形举例,外面画红线框就是这个多边形包围盒。

    91661

    如何实现机器学习算法

    我强烈建议将算法从一种语言移植到另一种语言,以此作为沿着这条道路快速前进一种方式。你可以找到很多开源算法实现,你可以用另一种语言编写评论,图表化,内化和重新实现。...程序员(比如数学家)在抽象方面有着独特技能,你可以看到算法是如何被应用到更一般一类问题或其他问题。 限制 你可以通过动手实现机器学习算法学到很多东西,但是也要记住一些缺点。...错误:用户少代码更容易出错,即使是熟练程序员和单元测试也是如此。使用标准库可以减少算法实现中存在错误可能性。 非直观飞跃:由于涉及复杂数学,一些算法依赖于推理或逻辑中非直观跳转。...在这篇文章中,我想为您提供一些直观算法建议,您可以从中选择您第一个机器学习算法从头开始实施。 普通最小二乘线性回归:使用y二维数据集和模型x。打印每个迭代算法错误。...考虑绘制算法每次迭代最佳拟合和预测线,以查看更新如何影响模型。 k-最近邻居:考虑使用二维数据集,甚至可以使用方格纸创建数据集,以便绘制它们。

    66290

    高性能Web动画和渲染原理系列(2)——渲染管线和CPU渲染

    以便给浏览器一些处理内部工作时间,否则就无法在限定时间内完成画面更新,动态内容就会表现出卡顿,对用户体验造成负面影响。...、线和三角形绘制,所以一个矩形就至少需要2个三角形来表示(当然也可是多个),直观感觉上就是一种“杀鸡用牛刀”体验,GPU算力虽然很牛逼,但通常内存空间非常有限,所以最好只在必要时有节制使用GPU...渲染对象(RenderObject) 在DOM树解析时,浏览器会为可见元素创建一个RenderObject类实例,用于记录绘制这个节点需要一些信息和方法,RenderObject会依据HTML中DOM...,在上面的示例中,变更区擦除后从下到上依次要绘制天空、山和人物,人物是绘制在最上层以便可以完整显示,人物离开后空白像素也在重绘中被修复。...,最后将结果绘制到目标位置上,相比之下,分层缓存方案使用了更多存储空间来缓存绘制像素数据,但减少了更新时计算量,是典型空间换时间做法。

    1.5K30

    RenderingNG中关键数据结构及其角色

    与之相反,本地帧Local Frame包含了对应frame「所有数据」(DOM树和样式数据)转化为可以渲染和显示东西所需所有信息。...我们可以通过尽可能多「重复使用」以前部分来实现这一点。 内联Lnline片段信息 「内联内容」使用一个稍微不同表示方法。我们使用一个扁平化flat「列表」来表示内联内容。...如果一个「布局对象」在绘制过程中没有改变,它显示项目就会从「以前」列表中复制出来。...渲染通道绘制quad合成可以在GPU上有效完成,因为允许视觉效果是经过精心挑选可以直接映射到GPU特性上。 除了光栅化瓦片之外,还有其他类型quad。...quad 渲染通道 0 : 绘制到输出 后记 「分享是一种态度」,这篇文章,是一篇译文,算是一个自我学习过程中一种记录和总结。

    2K10

    一个有趣例子带你入门canvas

    而每次调用这个方法之后,列表都会被重置,然后就可以绘制图形。...(100, 25); //绘制到这个位置一条线 ctx.fill(); //填充图形,默认就制动结束路径了 在这个过程中,有一个比较有用函数,moveTo,这个函数实际上画不出来任何东西,它是属于上面描述路径列表一部分...我们也能够使用 moveTo()绘制一些不连续路径。 这个时候你可以想象一下在纸上画东西,笔尖从一个点到另一个点移动过程。这个过程模式叫做笔式绘图仪模式。...第一反应就是 isPointInPath,或者是迭代所有图形,拿鼠标的点去与图形点碰撞检测,这个方法可以用,但是适用场景比较少,还有就是性能开销比较大,如果图形太多,每一个都需要经过计算,那么这个交互会变得非常不友好...有没有其他方案了,在游戏界有一个普遍使用方案——包围盒,什么是包围盒呢?我们以上面的图形举例,外面画红线框就是这个多边形包围盒。

    89410

    ​canvas 高级功能(中)

    在画布中绘制所有东西都是已经合成,这意味着绘制所有内容都会与已经绘制现有元素合并在一起。这实际上都是基本合成,只是将一些内容叠加到另一些内容之上。...赋给globalAlpha值必须在0.0(全透明)与1.0(不透明)之间,默认值是1.0。简单说,globalAlpha属性会影响将要绘制对象透明度。...你可能没有注意到这一点,因为此时使用合成方法能得到你预期结果:一个图形叠加到另一图形之上。这种合成称为源覆盖于目标之上,源是绘制图形,而目标则是可能已经绘制了图形2D渲染上下文。...例如,source-over 是(源覆盖于目标之上)简称,目标是隐含,因为它不需要在值中指定(源必须绘制在某些东西之上)。...让我们先了解一下globalCompositeOperation支持11种选择。使用下面的代码作为模板,你可以学习每一种合成操作。其中蓝色正方形是目标,而粉红色正方形是源。

    82720

    WebRender:让网页渲染如丝顺滑

    但 GPU 可以很快完成合成工作,转移过来比较简单。 ? 一些浏览器在这种并行方法上走得更远,直接在 CPU 上添加了一个合成器线程。由它管理 GPU 中发生合成工作。...另一些时候,需要多个图层时,却可能只得到一个图层。这个图层将会不断重绘并转移到合成器,进行合成工作而不改变任何东西。 这意味着你已经将绘制量翻了一番,每个像素都处理了两遍,毫无益处。...它们会: 找到形状所有角顶点位置。这被称为顶点着色(vertex shading)。 ? 找出连接这些角顶点线条。由此可以得到哪些像素被形状所覆盖。...首先,RenderBackend 可以减少显示列表项目。它会识别哪些项目将真正出现在屏幕上。为此,它将查看一些东西,如每个滚动盒滚动距离。...第二遍时候,可以将这个角通过镜像放置到盒子各个部分。然后就可以完全不透明渲染该组。 ? 接下来,我们需要做就是改变这个纹理不透明度,并将其放在需要输入到屏幕最终纹理中。 ?

    3K30

    强大 Wolfram 11.0(上)

    当输入代码,会出现很多自动完整指令名(越来越难输错东西),当输入文本时,会出现实时拼写检查,我们会不断更新以确保包含最新单词。...经过多年实践,越来越明显是许多领域都可以用机器学习方法来处理,尤其是通过神经网络。...是的,你可以用底层程序库把东西拼接在一起。但是,在构建版本 11 时,我们给自己设定了一个目标,创建一种流线型方法来设置并培训神经网络——其中我们已经尽可能自动化了。...我们已经永久拥有传统统计数据拟合和插值,但是神经网络拥有庞大丰富可能计算结构空间以便拟合或培训数据。在过去几年里,非常明显看到一系列领域被它所革新——还会有更多。...因此,我们完全可以用高中教学方法绘制 Tan[x],不连接 –∞ 和 + ∞。对于 Tan[x] 而言这一点很好实现,但对于更复杂函数来说,我们有尖端算法技术对其进行支持。 ?

    69960

    ArcGIS Pro动态投影和地理变换

    你拿到地图,把它们一个一个放在一张桌子上,然后……它们不匹配。它们是在不同坐标系中绘制。在它们可以一起使用之前,您需要重绘其中一个。你知道如何手动将地图从一个坐标系重新绘制到另一个坐标系吗?...我当然不会,但我敢打赌这需要大量工作。 可以想象,使用这些方法不会发生太多地理分析。GIS 改变了游戏规则,因为它使我们能够在坐标系之间轻松切换,并结合以前不兼容数据和地图。...动态投影执行与投影工具相同过程,只是数据不会改变。它只是临时显示在坐标系中。 当您数据位于与地图不同坐标系中时,动态投影是 ArcGIS 用来解决冲突方法。...差异很小,因此您可能不会注意到它位于错误位置,但这只会使问题变得更糟。 地理变换是将您地理坐标(纬度和经度)从一个 GCS 转换为另一个 GCS 计算,以便它们会在正确位置绘制。...请注意,选择可能会导致您数据绘制在错误位置。 ? 好消息是,如果您不知道选择哪个,您可以选择第一个。它们根据范围和准确性进行排序。覆盖大部分数据范围转换将排在第一位。

    2.3K30

    Unity通用渲染管线(URP)系列(二)——Draw Calls(Shaders and Batches)

    后面是一个代码块,其中包含更多带有关键字块。这里有一个Properties块来定义材质属性,然后是一个SubShader块,它需要有一个PASS块,pass定义了一种呈现某些东西方法。...片段对应于显示像素或纹理纹素,但是它不代表最终结果,因为当另外一些东西画在它上面的时候,它可能会被覆盖或者深度测试不通过时候被丢弃。...2.3 GPU Instancing 还有一种合并DrawCall方法,该方法适用于逐对象材质属性。...该方法也有一些注意事项,例如,当涉及不同比例时,不能保证较大网格法线向量为单位长度。此外,绘制顺序也将更改,因为它现在是单个网格而不是多个。...这样做是因为丢弃片段使某些GPU优化无法实现,因为不会再假定三角形完全覆盖了它们后面的内容。首先,通过绘制完全不透明对象,它们可能最终覆盖了部分alpha剪裁对象,可以节省处理一些隐藏片元。 ?

    6.2K51

    谷歌论文抢鲜看:教机器画画

    从小时候开始,孩纸们就可以通过简单描绘来形容一个具体物体或者描述他们心情,但是他们所画东西不像照片所拍摄一样与现实事物一样,但是它可以告诉我们一些关于人们如何代表和重建周围世界图像方式。...Sketch Drawings”中,提出了一种能够产生普通物体草图生成式复现神经网络,其目的是训练机器人以和人类相似的方式绘制和概括一些抽象概念,在手绘草图训练模型,每一个笔:移动方向、什么时候抬起笔...,并且实际学到了一些关于人们绘制方式,我们可以尝试将非标准草图提供给编码器: [1492190080368_6936_1492190085286.png] 当我们提供一只拥有3只眼睛猫作为输入草图时...我们想知道我们模型如何学习代表猪,一种方法是在两个不同潜在向量之间进行插值,并从每个内插潜在向量中可视化每个生成草图。...这种技术可以让应用程序通过提供完成不完整草图替代方法来协助艺术家创作过程。 在下图中,我们绘制不同不完整草图(红色),并使模型得到不同可能方式来完成绘图。

    1.3K30
    领券