问题标签 [custom-painting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
609 浏览

flutter - dart/flutter:CustomPaint 的更新速率低于 ValueNotifier 的值更新速率

我使用 dart FFI 从本机端检索数据,并使用 flutter 显示数据CustomPaint

ValueNotifier用来控制CustomPaint重绘。

代码:按速率轮询数据

使用状态类,我定期从本机端轮询数据,并将其分配给ValueNotifier.

请注意,我以大约 60fps 的速度进行轮询。

我将通知程序绑定到 CustomPaint 重绘

代码:响应式重绘 CustomPaint

然后将 CustomPaint 的重绘绑定到ValueNotifier,我用检索到的颜色绘制屏幕。

然后我注意到在视觉上颜色更新的速率低于轮询。这可以通过同时查看我的日志记录和电话屏幕来观察,尽管重绘工作正常。

问题

我应该如何实现感知同步更新?

我还应该补充一点,本机后端模拟以 1 秒的间隔在红/绿/蓝之间切换颜色。

由于轮询更加频繁,我预计会以​​大约 1 秒的间隔看到相当稳定的颜色变化。但是现在颜色的变化间隔更长。有时 repaint 很少被调用,可能是几秒钟,而轮询始终返回相当稳定的数据更新。

更新

根据我的测试,我应该保留setState,否则重绘只会停止。此外,通过将数据更新切换到飞镖地,我发现一切都按预期工作。所以它必须是本机端或 FFI 接口中的东西。这是在不涉及 FFI 时按预期工作的修改后的 dart 代码。

基本上我使用一个恒定的颜色集合并遍历它。

在本机方面,我有一个生产者/消费者线程模型正在工作。生产者以固定速率循环遍历颜色集合。每当生产者 ping 消费者时,消费者就会得到它。

ffiproduce()绑定到飞镖端ffiGetColor()函数。所以我假设这个消费者函数在主线程中工作。

所以我的一个想法是,C++ 端的线程协调可能会影响颤振通过CustomPaint.

但我现在不知道如何证明这一点。

0 投票
1 回答
1248 浏览

flutter - Flutter 在特定路径位置将小部件绘制到画布

我的页面中有这个自定义路径

如何在此路径的某处绘制/渲染小部件(例如复选框)?

我尝试使用堆叠的小部件并定位复选框,但这在每个设备上看起来都不一样。

0 投票
1 回答
152 浏览

java - android旋转动画减少计算并使动画流畅

我正在尝试绘制自定义旋转动画。这是我的代码的输出。

在此处输入图像描述

基本上每个圈子都有小的子圈。唯一的问题是,有时动画会跳过一些帧,动画看起来会损坏。我的猜测是因为这个计算很耗时,所以会丢失一些帧。

我的问题是改善这一点并保持动画流畅的最佳方法是什么。是否可以只计算第一帧并旋转画布以便我们可以减少计算?

动画师

0 投票
1 回答
567 浏览

flutter - Flutter Custom Painter 绘图滞后

我正在尝试编写一个绘图应用程序,用户可以在其中选择不同的笔颜色并绘制彩色绘图。我创建了一个 PointsGroup 类,它存储偏移列表和相关颜色。在 GestureDetector 的 onPanUpdate 中,PointsGroup 被附加到 PointsGroup 列表并传递给 SignaturePainter。

但是画的有点慢,笔一动就画不出来。

你可以看视频https://free.hubcap.video/v/LtOqoEj9H0dY9F9xC_jSst9HT3tSOJlTi

第一次抽奖时也没有显示该图。笔一抬起,它就开始显示。

PS如果有任何替代方法可以实现所需的多色绘图,那就没问题了。

0 投票
3 回答
2204 浏览

flutter - 如何在颤动中创建具有圆形边缘的自定义容器?

我正在尝试创建一个具有圆形边缘但无法使角变圆的自定义容器。当前图像 我只想把绿色容器的角弄圆。

0 投票
1 回答
201 浏览

flutter - 颤振:CustomPaint 小部件在放入列时变为空白

我有一些超级奇怪的东西:

下面的代码用 绘制一个矩形CustomPaint。这个版本很好用

然后,一旦我将它CustomPaint放入一个Column小部件中,我就不再看到绘制的矩形。

画家长这样

0 投票
2 回答
90 浏览

flutter - CustomPaint drawLine 无法对绘制的线条应用透明度

我试图使用 alpha 通道在带有CustomPaint's 的线条颜色上应用透明度Canvas.drawLine()

问题

但是,alpha 通道上的颜色调整对结果没有影响,例如,下面的代码仍然给我 100% 不透明的白线

解决方法

我必须绘制 1 像素宽drawRect才能获得透明线条。

问题

这是设计使然吗?

0 投票
0 回答
460 浏览

flutter - flutter: 让 CustomPaint 绘图的图层相互补充,而不是相互融合

我在一个上画了两层图CustomPaint。第一个将遮挡第二层的一半以上。

问题

Paint目前,我只使用两个s绘制第一个数据,然后绘制第二个数据,并使用它们的blendMode集合。

这会创建混合的两个数据的叠加。但我不需要混合,只需要使用第二个绘制的差异区域Paint,即互补复合视图。

在性能方面,我不知道混合是否会有内部优化以避免绘制被遮挡的部分。

参考图像

在此处输入图像描述

请注意,所有这些数据图都混合在一起,但我只需要它们相互遮挡,而重叠的部分根本不绘制以提高性能。

尝试

我可以使用新路径来仅绘制差异,但我不确定这是最简单的方法。

我查了一下RepaintBoundary,但它是一个处理不经常数据更改的小部件,而不是我在这里需要的。

同样Overlay似乎是一个独立的小部件,所以我不知道如何将它放入CustomPaint.

问题

有没有标准的方法来实现我需要的遮挡?

0 投票
0 回答
31 浏览

flutter - 子 customPaint 无法点击

我用画布画了一个漏斗图,但我不能点击它。我很困惑。

0 投票
1 回答
118 浏览

flutter - GestureDetector 在画成圆圈的三角形上

我正在尝试使用 CustomPaint 小部件处理三个绘制的“四分之一圆”的水龙头。我尝试在 QuarterCirclePainter 类周围添加 GestureDetectors。甚至尝试对 TextSpan 使用 GestureRecognizer 都没有成功。尝试将其包装在用手势检测器包裹的容器中。查看了有关在 CustomPaint 周围添加 GestureDetectors 的类似帖子,但在这种情况下,它们似乎都不起作用。如何做到这一点?

在此处输入图像描述