javascript - 如何修复 CSS2 变换上的画布模糊:比例(2)?
问题描述
我尝试了几乎所有可以在谷歌上找到的东西,但仍然无法在画布中找到解决方案。
因为缩放在不同浏览器中对定位的影响不同,所以我想使用 CSS 2d translate() 通常会提供比 position: absolute top & left 更好的 FPS。
https://jsfiddle.net/p0L9ztw8/
const dpr = window.devicePixelRatio || window.webkitDevicePixelRatio || window.mozDevicePixelRatio || 1;
const chineseSize = 60
const scale = 2
HanziWriter.create($('#test1')[0], '龍', {
renderer: 'canvas',
width: chineseSize * dpr * scale,
height: chineseSize * dpr * scale,
padding: 2
});
HanziWriter.create($('#test2')[0], '龍', {
renderer: 'canvas',
width: chineseSize * dpr * scale,
height: chineseSize * dpr * scale,
padding: 2
});
html, body {
margin: 0;
padding: 0;
}
div {
position: absolute;
transform-origin: left top;
}
canvas {
width: 60px;
height: 60px;
}
#test1 {
left: 0;
transform: scale(2);
}
#test2 {
left: 50%;
zoom: 200%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hanzi-writer@3.2.0/dist/index.cjs.min.js"></script>
<div id="test1"></div>
<div id="test2"></div>
解决方案
您是否尝试过在 css 中进行像素化图像渲染?这可能是画布和每个要缩放的 div 所需要的。
canvas {
image-rendering: -moz-crisp-edges;image-rendering: -webkit-crisp-edges;image-rendering: pixelated;image-rendering: crisp-edges;
width: 60px;
height: 60px;
}
推荐阅读
- php - 没有实际数据库列的表单上的 Laravel Nova 额外“图像”字段
- xaml - Xamarin Forms Access 父集合项
- python - 指定我的python包依赖于opencv的正确方法是什么?
- c# - “构造函数”不是可识别的属性位置
- opencl - 具有多处理 INVALID_DEVICE 的 PyOpenCL
- java - 尝试将 MockMvc 与 Wiremock 一起使用
- jsprit - jsprit 入门:概念性建议
- selenium - 并行运行量角器测试时如何显示执行的规范总数?
- strapi - 异步更新(参数,数据,{ 文件 } = {})不起作用
- validation - Tensorflow/Keras:不稳定的验证损失