gpt4 book ai didi

javascript - 在 canvas 和 jquery 中设置图像大小百分比

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:40 24 4
gpt4 key购买 nike

我正在尝试使用 Canvas 创建一个单页纸,您可以在其中单击以随机添加/放置图像。我已经得到了大部分我想工作的东西,但是对于 jquery 和 canvas 来说是非常新的,我仍然不知道如何为我的图像设置最大尺寸。据我所知,当你没有在 css 中手动设置 Canvas 大小时,很难让 Canvas 上的图像完美地工作,但我有一个调整大小的 Canvas ,所以我不太确定我是怎么做的解决这个问题。

我希望我放置的图像的最大高度/最大宽度为视口(viewport)的 80%。我尝试在 css 中设置最大尺寸,但它没有做任何事情。

这是一个 jsfiddle

  $(document).ready(function () {
var images = [];
$("#siteload").fadeIn(1500);
$('.put').each(function() {
images.push($(this).attr('src'));
});
(function() {
var
htmlCanvas = document.getElementById('c'),
context = htmlCanvas.getContext('2d');
initialize();
img = new Image();
count = 0;
htmlCanvas.onclick= function(evt) {
img.src = images[count];
var x = evt.offsetX - img.width/2,
y = evt.offsetY - img.height/2;
context.drawImage(img, x, y);
count++;
if (count == images.length) {
count = 0;
}
}
function initialize() {
window.addEventListener('resize', resizeCanvas, false);
resizeCanvas();
}
function resizeCanvas() {
htmlCanvas.width = window.innerWidth;
htmlCanvas.height = window.innerHeight;
}
})();
});
$(".hvr_cnt").mouseenter(function () {
title = $("<div class='hvr_ttl'>" + $(this).children()[0].title + "</div>");
$(this).children()[0].title = "";
$(this).append(title);
});
$(document).mousemove(function(e){
$('.hvr_ttl').css({
top: e.pageY - $(".hvr_ttl").height()/2,
left: e.pageX - $(".hvr_ttl").width()/2
});
});
$(".hvr_cnt").mouseleave(function (e) {
$(this).children()[0].title = $($(this).children()[1]).html();
$(this).children()[1].remove();
});
body {
margin: 0;
padding: 0;
background: rgb(240, 240, 240);
width: 100%;
height: 100%;
border: 0;
color: rgb(40, 40, 40);
overflow: hidden;
display: block;
}

.slides {
display: none
}

#c {
display: block;
position: absolute;
left: 0px;
top: 0px;
}

.hvr_ttl {
display: block;
position: absolute;
pointer-events: none;
cursor: none;
}

.hvr_cnt {
cursor: none;
padding: none;
margin: none;
}
<body ontouchstart="">
<div class="hvr_cnt">
<canvas id="c" title="click"></canvas>
</div>
<ul class="slides">
<li><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Smiley.svg/2000px-Smiley.svg.png" class="put" /></li>
<li><img src="https://emojipedia-us.s3.amazonaws.com/thumbs/160/google/56/thumbs-up-sign_1f44d.png" class="put" /></li>
</ul>
</body>

任何帮助将不胜感激:)

最佳答案

试试这个:

htmlCanvas.onclick= function(evt) {
img.src = images[count];

img.width = 80/100* htmlCanvas.width;
img.height = 80/100* htmlCanvas.height;

var x = evt.offsetX - img.width/2,
y = evt.offsetY - img.height/2;
// context.drawImage(img, x, y);
context.drawImage(img, x, y, img.width, img.height);
count++;
if (count == images.length) {
count = 0;
}


}

关于javascript - 在 canvas 和 jquery 中设置图像大小百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com