QuarkRenderer
Это облегчённый и мощный движок для рендеринга Canvas (и SVG), созданный на основе ZRender.
Главная страница: https://quark-renderer.gitee.io
Важно: Quark Renderer не создавался с нуля, он был переработан из ZRender, который является базовым движком рендеринга для ECharts.
Я много лет использовал ECharts и ZRender в области визуализации данных, и оба инструмента оказались очень мощными.
Чтобы лучше понять дизайн ZRender на уровне исходного кода (2020-01), я потратил некоторое время на его изучение. В ходе этого процесса я переработал большое количество кода и комментариев, потому что:
По сравнению с оригинальной реализацией ZRender, моя версия фокусируется на следующих улучшениях:
Использование в браузере:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Animation</title>
<script src="../dist/quark-renderer.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
html,
body,
#main {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="main"></div>
<script type="text/javascript">
let main = document.getElementById('main');
let qr = QuarkRenderer.init(main);
let gradient = new QuarkRenderer.LinearGradient();
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'black');
let circle = new QuarkRenderer.Circle({
position: [0, 0],
scale: [1, 1],
shape: {
cx: 50,
cy: 50,
r: 50,
},
style: {
fill: gradient,
lineWidth: 5,
text: 'circle',
textPosition: 'inside',
},
});
qr.add(circle);
// first animation process
circle
.animate()
.when(1000, {
position: [200, 0],
scale: [2, 1],
})
.when(2000, {
position: [200, 200],
scale: [1, 1],
})
.when(3000, {
position: [0, 200],
scale: [1, 2],
})
.when(4000, {
position: [0, 0],
scale: [1, 1],
})
.during(function () {
console.log(circle.animationProcessList.length);
})
.done(function () {
console.log(circle.animationProcessList.length);
})
.start(); //.start(true)
//second animation process
circle
.animate()
.when(1000, {
position: [500, 0],
scale: [2, 1],
})
.when(2000, {
position: [200, 200],
scale: [1, 1],
})
.when(3000, {
position: [0, 200],
scale: [1, 2],
})
.when(4000, {
position: [0, 0],
scale: [1, 1],
})
.during(function () {
console.log(circle.animationProcessList.length);
})
.done(function () {
console.log(circle.animationProcessList.length);
})
.start(); //.start(true)
</script>
</body>
</html>
Использование в мини-программе WeChat:
<view class="page">
<view class="page__hd">
<view class="page__title">Quark Renderer 小程序示例1</view>
</view>
<view class="page__bd page__bd_spacing">
<view style="width:100%;height:500px;">
<canvas style="width: 300px; height: 500px;" canvas-id="firstCanvas"></canvas>
</view>
</view>
</view>
onReady: function () {
let ctx = wx.createCanvasContext('firstCanvas');
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.