带圆角的HTML5画布

ale*_*ngn 4 javascript html5 canvas rounded-corners css3

我想要一个带圆角的HTML5画布.我正在使用CSS属性border-radius: 15px来绕过我的角落.

但是,当我在画布的角落画一些东西时,我可以画在角落里.

一开始:

是)我有的:

我想要的是:

在此输入图像描述

你有什么解决办法可以避免吗?我想创建一个面具,但我真的不知道该怎么做..有关信息,这适用于Firefox,但不适用于Chrome/Safari/Opera.

这是一个小例子:

http://jsfiddle.net/XYHpJ/

谢谢!

Tom*_*sen 17

只需在stackoverflow上使用此示例:https://stackoverflow.com/a/12336233/1312570

解: http://jsfiddle.net/rzSmw/

#canvas_container
{
    background: #fff;
    border: 1px solid #aaa;
    border-radius: 15px;
    height: 515px;
    margin: 20px 20px;
    overflow: hidden;
    width: 690px;

    /* this fixes the overflow:hidden in Chrome/Opera */
    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}
Run Code Online (Sandbox Code Playgroud)


Nat*_*pos 7

避免这种情况的最好方法是在<canvas>内部插入"容器"标签,然后将其应用border-radius到容器中.像这样:

<div id="container">
    <canvas></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

有了这个CSS:

#container {
    border-radius: 10px;
    background-color: white;
    border: 1px solid #000;
    overflow: hidden;
}

#container > div {
    height: 200px;
    background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

一个工作示例:http://jsbin.com/onuqid/2/

Allendar在评论中建议你也可以使用display: block;和摆脱包装.