像 facebook 群聊一样在 Web 上群聊圈 UI
Group Chat Circle on Web Chat like a facebook Group Chat UI
enter image description here各位。我正在尝试为我的大学项目开发群聊 UI。
但我发现很难将用户的个人资料图像组合在一个圆框中。
如果 Google 上没有组 profile.I 搜索,我想在圆形框架中添加 2 或 3 个用户,它说我使用 canvas。我试试这个。它不起作用。如何将两个或多个用户组合成一个圆形框架?
这是我的代码。
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img1 = loadImage('1.png');
var img2 = loadImage('2.png');
var imagesLoaded = 0;
function main() {
imagesLoaded += 1;
if(imagesLoaded == 2) {
// composite now
ctx.drawImage(img1, 0, 0);
ctx.globalAlpha = 0.5;
ctx.drawImage(img2, 0, 0);
}
}
function loadImage(src, onload) {
var img = new Image();
img.onload = onload;
img.src = src;
return img;
}
如果你想通过 canvas 获取你必须使用 globalCompositeOperation:
var c = document.getElementById('c');
var img = new Image();
var ctx = c.getContext("2d");
img.onload = function() {
ctx.drawImage(img, 0, 0, 308, 308);
ctx.drawImage(img, 312, 0, 308, 308);
ctx.drawImage(img, 0, 312, 308, 308);
ctx.drawImage(img, 312, 312, 308, 308);
}
c.width= 620;
c.height=620;
ctx.fillStyle = "#FFFFFF";
ctx.beginPath();
ctx.arc(310,310,310,0,2*Math.PI);
ctx.fill();
ctx.globalCompositeOperation='source-atop';
img.src = "http://images.movieplayer.it/images/2015/09/28/avatar-1.jpg";
<canvas id ="c" ></canvas>
否则,您可以向您的 canvas 申请一个 class,边框半径为:
var c = document.getElementById('c');
var img = new Image();
var ctx = c.getContext("2d");
img.onload = function() {
ctx.drawImage(img, 0, 0, 308, 308);
ctx.drawImage(img, 312, 0, 308, 308);
ctx.drawImage(img, 0, 312, 308, 308);
ctx.drawImage(img, 312, 312, 308, 308);
}
c.width= 620;
c.height=620;
img.src = "http://images.movieplayer.it/images/2015/09/28/avatar-1.jpg";
.rounded {
border-radius: 310px;
}
<canvas id ="c" class="rounded" ></canvas>
enter image description here各位。我正在尝试为我的大学项目开发群聊 UI。 但我发现很难将用户的个人资料图像组合在一个圆框中。 如果 Google 上没有组 profile.I 搜索,我想在圆形框架中添加 2 或 3 个用户,它说我使用 canvas。我试试这个。它不起作用。如何将两个或多个用户组合成一个圆形框架? 这是我的代码。
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img1 = loadImage('1.png');
var img2 = loadImage('2.png');
var imagesLoaded = 0;
function main() {
imagesLoaded += 1;
if(imagesLoaded == 2) {
// composite now
ctx.drawImage(img1, 0, 0);
ctx.globalAlpha = 0.5;
ctx.drawImage(img2, 0, 0);
}
}
function loadImage(src, onload) {
var img = new Image();
img.onload = onload;
img.src = src;
return img;
}
如果你想通过 canvas 获取你必须使用 globalCompositeOperation:
var c = document.getElementById('c');
var img = new Image();
var ctx = c.getContext("2d");
img.onload = function() {
ctx.drawImage(img, 0, 0, 308, 308);
ctx.drawImage(img, 312, 0, 308, 308);
ctx.drawImage(img, 0, 312, 308, 308);
ctx.drawImage(img, 312, 312, 308, 308);
}
c.width= 620;
c.height=620;
ctx.fillStyle = "#FFFFFF";
ctx.beginPath();
ctx.arc(310,310,310,0,2*Math.PI);
ctx.fill();
ctx.globalCompositeOperation='source-atop';
img.src = "http://images.movieplayer.it/images/2015/09/28/avatar-1.jpg";
<canvas id ="c" ></canvas>
否则,您可以向您的 canvas 申请一个 class,边框半径为:
var c = document.getElementById('c');
var img = new Image();
var ctx = c.getContext("2d");
img.onload = function() {
ctx.drawImage(img, 0, 0, 308, 308);
ctx.drawImage(img, 312, 0, 308, 308);
ctx.drawImage(img, 0, 312, 308, 308);
ctx.drawImage(img, 312, 312, 308, 308);
}
c.width= 620;
c.height=620;
img.src = "http://images.movieplayer.it/images/2015/09/28/avatar-1.jpg";
.rounded {
border-radius: 310px;
}
<canvas id ="c" class="rounded" ></canvas>