HarmonyOS 鸿蒙Next Canvas组件绘制过程中,基本单位是什么?基本单位如何和物理单位联系起来?

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Canvas组件绘制过程中,基本单位是什么?基本单位如何和物理单位联系起来?

如果是在Android中,自定义View的基本单位是像素,开发者只需要获取每毫米具有多少像素即可把像素单位和物理尺寸单位联系起来。

在鸿蒙中,理论上根据display.getDefaultDisplaySync().densityDPI获取每英寸具有的像素个数,然后densityDPI/2.54/10即可得到每毫米的像素个数。

根据以上理论即可使用Canvas画出和物理尺子一样的尺子。

但实际结果不符合上诉理论,是不是因为你们的Canvas的基本单位不是像素?


更多关于HarmonyOS 鸿蒙Next Canvas组件绘制过程中,基本单位是什么?基本单位如何和物理单位联系起来?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
用以下方法获取,这个方法里获取的单位是vp
private settings: RenderingContextSettings = new RenderingContextSettings(true);
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings);

Canvas(this.context) .width(‘100%’) .height(‘100%’) .onReady(() => { let width = this.context.width let height = this.context.height })

更多关于HarmonyOS 鸿蒙Next Canvas组件绘制过程中,基本单位是什么?基本单位如何和物理单位联系起来?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Canvas的基本单位不是px,而是vp, vp是鸿蒙特有的长度单位,类似于Android的dp; 根据您的描述,您可能需要将densityDPI/2.54/10得到的每毫米像素通过px2vp函数将px转化为vp,然后再Canvas中绘制尺子。

在HarmonyOS鸿蒙Next Canvas组件绘制过程中,基本单位是逻辑像素(Logical Pixel)

逻辑像素是鸿蒙系统在绘制图形时采用的一个抽象单位,它确保了在不同分辨率和屏幕尺寸的设备上,绘制的图形能够保持一致的视觉比例和效果。逻辑像素并不直接对应于物理屏幕上的像素点,而是根据设备的DPI(Dots Per Inch,每英寸点数)和显示密度进行动态调整。

要将逻辑像素与物理单位联系起来,鸿蒙系统内部会根据设备的显示特性进行自动换算。具体而言,系统会考虑设备的实际DPI值以及用户设定的显示缩放比例,将逻辑像素转换为物理像素进行渲染。这一转换过程确保了在不同设备和显示设置下,图形元素能够保持其应有的尺寸和比例。

在鸿蒙系统中,开发者无需手动进行这种单位转换,因为Next Canvas组件会自动处理逻辑像素与物理像素之间的转换。开发者只需在绘制过程中使用逻辑像素作为基本单位,即可确保图形的正确显示和适配。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部