问题标签 [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.
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
.
但我现在不知道如何证明这一点。
flutter - Flutter 在特定路径位置将小部件绘制到画布
我的页面中有这个自定义路径
如何在此路径的某处绘制/渲染小部件(例如复选框)?
我尝试使用堆叠的小部件并定位复选框,但这在每个设备上看起来都不一样。
flutter - Flutter Custom Painter 绘图滞后
我正在尝试编写一个绘图应用程序,用户可以在其中选择不同的笔颜色并绘制彩色绘图。我创建了一个 PointsGroup 类,它存储偏移列表和相关颜色。在 GestureDetector 的 onPanUpdate 中,PointsGroup 被附加到 PointsGroup 列表并传递给 SignaturePainter。
但是画的有点慢,笔一动就画不出来。
你可以看视频https://free.hubcap.video/v/LtOqoEj9H0dY9F9xC_jSst9HT3tSOJlTi
第一次抽奖时也没有显示该图。笔一抬起,它就开始显示。
PS如果有任何替代方法可以实现所需的多色绘图,那就没问题了。
flutter - 颤振:CustomPaint 小部件在放入列时变为空白
我有一些超级奇怪的东西:
下面的代码用 绘制一个矩形CustomPaint
。这个版本很好用
然后,一旦我将它CustomPaint
放入一个Column
小部件中,我就不再看到绘制的矩形。
画家长这样
flutter - CustomPaint drawLine 无法对绘制的线条应用透明度
我试图使用 alpha 通道在带有CustomPaint
's 的线条颜色上应用透明度Canvas.drawLine()
。
问题
但是,alpha 通道上的颜色调整对结果没有影响,例如,下面的代码仍然给我 100% 不透明的白线
解决方法
我必须绘制 1 像素宽drawRect
才能获得透明线条。
问题
这是设计使然吗?
flutter - flutter: 让 CustomPaint 绘图的图层相互补充,而不是相互融合
我在一个上画了两层图CustomPaint
。第一个将遮挡第二层的一半以上。
问题
Paint
目前,我只使用两个s绘制第一个数据,然后绘制第二个数据,并使用它们的blendMode
集合。
这会创建混合的两个数据的叠加。但我不需要混合,只需要使用第二个绘制的差异区域Paint
,即互补复合视图。
在性能方面,我不知道混合是否会有内部优化以避免绘制被遮挡的部分。
参考图像
请注意,所有这些数据图都混合在一起,但我只需要它们相互遮挡,而重叠的部分根本不绘制以提高性能。
尝试
我可以使用新路径来仅绘制差异,但我不确定这是最简单的方法。
我查了一下RepaintBoundary
,但它是一个处理不经常数据更改的小部件,而不是我在这里需要的。
同样Overlay
似乎是一个独立的小部件,所以我不知道如何将它放入CustomPaint
.
问题
有没有标准的方法来实现我需要的遮挡?
flutter - 子 customPaint 无法点击
我用画布画了一个漏斗图,但我不能点击它。我很困惑。