leafer-ui icon indicating copy to clipboard operation
leafer-ui copied to clipboard

小程序画布显示问题

Open hcweb opened this issue 2 months ago • 4 comments

Image

`import React, { useEffect, useRef } from "react"; import { Canvas, View } from "@tarojs/components"; import Taro from "@tarojs/taro"; import { Leafer, useCanvas } from "@leafer-ui/miniapp"; import "@leafer-in/export"; import "@leafer-in/view";

function Index(props) { useCanvas("canvas", Taro); // 绑定平台全局变量

const leaferCurrent = useRef(null);

useEffect(() => { leaferCurrent.current = new Leafer({ view: "leafer", type: "viewport", mobile: true, width: 200, height: 200, fill: "#000", });

return () => {
  leaferCurrent.current?.destroy();
};

}, []);

function receiveEvent(event) { leaferCurrent.current?.receiveEvent(event); // 需手动接收、传递画布交互事件给leafer }

return ( <View className={"w-screen h-screen relative left-0 top-0"}> <Canvas id="leafer" type={"2d"} onTouchStart={(e) => receiveEvent(e)} onTouchMove={(e) => receiveEvent(e)} onTouchEnd={(e) => receiveEvent(e)} onTouchCancel={(e) => receiveEvent(e)} ></Canvas> </View> ); }

export default Index;`

按道理应该是显示一个黑色的正方形 但显示的是一个长方形 这是bug还是我没操作对

hcweb avatar Oct 17 '25 04:10 hcweb

小程序的画布宽高需要在css中指定

leaferjs avatar Oct 17 '25 06:10 leaferjs

小程序的画布宽高需要在css中指定

感谢 通过css可以设置

现在发现一个问题导出的时候高度和设置的会不一样

Image
leaferCurrent.current
      ?.export("png", {
        size: {
          width: 1500,
          height: 1000,
        },
        //fill: "#000000",
        // smooth: true,
        screenshot: true,
        contextSettings: {
          alpha: true,
        },
      })
      .then((result) => {
        console.log("xxxxxxxxxxxxxxxx", result);
        resolve(result.data);
      })
      .catch((err) => {
        reject(err);
      [});

[设置]height: 1000会变成999 height: 1000.5会变成1000这是bug还是我哪里没有配置对?

hcweb avatar Oct 17 '25 08:10 hcweb

谢谢反馈,后面优化一下~

leaferjs avatar Oct 20 '25 02:10 leaferjs

谢谢反馈,后面优化一下~

感谢 下个版本是否会优化

hcweb avatar Oct 20 '25 13:10 hcweb