在不同分辨率下显示不一致问题,canvas获取的宽高不同
zhangjianxing2011 opened this issue · comments
- 你当前是什么框架(必填):
- Vue3
- 你使用的是哪个包(必填): @lucky-canvas/vue: "^0.1.11",
-
你当前插件的版本(必填): 0.1.11
-
当前环境是小程序还是浏览器(选填):
-
chrome浏览器 版本 125.0.6422.113 前面几个版本也会有这个问题
-
详细描述你的bug:
运行后在同一浏览器,不同的分辨率下显示的效果不一致问题
- mac15.4英寸(2880 × 1800) 下canvas 变形问题
![image](https://private-user-images.githubusercontent.com/37395113/335499335-3b9f4746-b6d1-465f-ba79-fa3e0e675f4d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2Nzc4NTMsIm5iZiI6MTcyMDY3NzU1MywicGF0aCI6Ii8zNzM5NTExMy8zMzU0OTkzMzUtM2I5ZjQ3NDYtYjZkMS00NjVmLWJhNzktZmEzZTBlNjc1ZjRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDA1NTkxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc0Zjg4MmJlZjI0ZmQwZDljYmJiOWJmZDEzMDFlMGNmYzgzMTljMDk5MzVmYTM1Mzk2ZjNiY2Q5YzhhMDgxMzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.U-IE8juw7ZdhRVt-GW9YBcbzaMAogmbZ6R-76zoWMYw)
![image](https://private-user-images.githubusercontent.com/37395113/335502897-78920226-cb7d-4615-ae5a-544aed6b9d7b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2Nzc4NTMsIm5iZiI6MTcyMDY3NzU1MywicGF0aCI6Ii8zNzM5NTExMy8zMzU1MDI4OTctNzg5MjAyMjYtY2I3ZC00NjE1LWFlNWEtNTQ0YWVkNmI5ZDdiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzExVDA1NTkxM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjZDAyNWJkNWJjMWU2YzFkMDgwZGM1Njk5NGQyMDg4NDZhZTNmODU0MGEzZjBkOGU5ZDBiYWUwMWEyZGVkOTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.yYIvwBbzuEqeiuYxld-M5IqERJvMNZJfGRNfbFSPHO0)
- 问题代码(重要):
<LuckyGrid
class="Jiugongge_body"
width="300"
height="300"
:prizes="prizes"
:buttons="buttons"
:blocks="blocks"
:default-config="defaultConfig"
:active-style="activeStyle"
/>
部分代码如下
/**
* @var axis 奖项位置
*/
const axis = [
[0, 0],
[1, 0],
[2, 0],
[2, 1],
[2, 2],
[1, 2],
[0, 2],
[0, 1],
];
// 背景
const blocks = computed(() => [
{ padding: "15px", background: "transparent", borderRadius: 28 },
{ padding: "4px", background: "transparent", borderRadius: 23 },
{ padding: "4px", background: "transparent", borderRadius: 20 },
]);
// 抽奖按钮
const buttons = computed(() => [
{
x: 1,
y: 1,
background: "transparent",
shadow: "0 5 1 #e89b4f",
imgs: [
{ src: startBtnImg.value, width: "100%", top: "0" },
],
},
]);
// 奖项
const prizes = computed(() => {
let list = pageConfig.value.prizeList || [];
list = list.map((item, i) => {
const fonts = [];
const imgs = [];
if (!item.showName || item.showName == 2) {
imgs.push({ src: item.appLink, width: '100%', height: '100%' });
} else {
fonts.push({ text: item.prizeName, top: "70%", fontSize: "14px" });
imgs.push({ src: item.appLink, width: "55%", top: "8%" });
}
return {
x: axis[i][0],
y: axis[i][1],
id: item.id,
index: i,
item: item,
fonts,
imgs,
};
});
if (list.length < 8) {
list.push(lastItem.value);
}
return list;
})
// 转盘图片信息
const { image: startBtnImg } = useStartBtnImg()
const { image: defaultPrizeImg, isDefault } = useDefaultPrizeImg()
const { image: luckBackgroundImg } = useLuckBackgroundImg()
const { image: brightFlashImg } = useBrightFlushImg()
const { image: darkFlashImg } = useDarkFlushImg()
const { style: bgStyle } = usePrizeBackgroundStyle()
// 谢谢参与奖项设置
const lastItem = computed(() => ({
x: 0,
y: 1,
id: {},
index: 8,
item: {},
// fonts: [{ text: "谢谢参与", top: "70%" }],
imgs: [
isDefault.value ?
{ src: defaultPrizeImg.value, width: "90%", height: "90%", top: "8%" }
: { src: defaultPrizeImg.value, width: "100%", height: "100%" }
],
}));
// 默认配置
const defaultConfig = {
gutter: 5,
};
// 默认样式
const defaultStyle = {
borderRadius: 15,
fontColor: "#e8414a",
fontSize: "12px",
textAlign: "center",
background: bgStyle.value.background,
shadow: bgStyle.value.boxShadow,
};
// 中奖标记样式
const activeStyle = {
shadow: "",
};
请问一下这个问题解决了吗,怎么解决的,我也出现这个问题了o(╥﹏╥)o
这个是正常的啊, canvas画布需要根据dpr调整清晰度, 如果你的抽奖变形了, 那说明你们有css样式干扰了我的画布
检查一下你们的全局css样式里, 有没有针对canvas的
新建一个项目试试, 排除一下外部因素, 只引入抽奖组件这一个插件, 看看还会出现偏移吗
你这个看上去, canvas没有偏移, 倒像是js代码把canvas的原点重置了
还有, 看一下官网的示例呢, 你在两个屏幕上, 也会出现这个问题吗
感谢大佬,已排查是最外层div的css导致了偏移,已经解决了(^▽^ )
我的也是css干扰导致的,看了半天没啥头绪,然后猛然间的就有感觉了 排查了下css 然后就发现问题了 感谢作者