{"id":4242,"date":"2014-06-30T20:09:36","date_gmt":"2014-06-30T12:09:36","guid":{"rendered":"http:\/\/www.zhangxinxu.com\/wordpress\/?p=4242"},"modified":"2018-07-29T22:44:03","modified_gmt":"2018-07-29T14:44:03","slug":"svg-canvas-image-border-radius","status":"publish","type":"post","link":"https:\/\/www.zhangxinxu.com\/wordpress\/2014\/06\/svg-canvas-image-border-radius\/","title":{"rendered":"\u5c0ftip: SVG\u548cCanvas\u5206\u522b\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u6548\u679c"},"content":{"rendered":"<p>by <a href=\"http:\/\/www.zhangxinxu.com\/\">zhangxinxu<\/a> from <a href=\"http:\/\/www.zhangxinxu.com\/\">http:\/\/www.zhangxinxu.com<\/a><br \/>\n\u672c\u6587\u5730\u5740\uff1a<a href=\"http:\/\/www.zhangxinxu.com\/wordpress\/?p=4242\">http:\/\/www.zhangxinxu.com\/wordpress\/?p=4242<\/a><\/p>\n<h3>\u4e00\u3001\u56fe\u7247\u8986\u76d6\u548cCSS3 border-radius\u5b9e\u73b0\u5706\u89d2<\/h3>\n<p><strong>\u56fe\u7247\u8986\u76d6<\/strong><br \/>\n\u627e\u4e2a\u4e2d\u95f4\u9542\u7a7a\u7684\u56fe\u7247\u8986\u76d6\u5728\u539f\u59cb\u56fe\u7247\u4e0a\uff0c\u9700\u8981\u8ddf\u7f51\u9875\u5e95\u8272\u4e00\u81f4\u3002<\/p>\n<p><strong>CSS3 border-radius<\/strong><\/p>\n<div class=\"zxx_code\">\n<pre>.xxx { border-radius: 100px; }<\/pre>\n<\/div>\n<p>\u4e0a\u9762\u4e24\u4e2a\u65b9\u6cd5demo\u6709\uff0c\u622a\u56fe\u6709~ <\/p>\n<p>\u53ef\u662fdemo\u4e0a\u7684\u56fe\u7247\u7d20\u6750\u4e00\u4e0d\u5c0f\u5fc3\u653e\u4e86\u4e2a\u5927\uff0c\u6211\u4e0d\u60f3\u6362\u56fe\u7247\uff0c\u5730\u5740\u5c31\u4e0d\u653e\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5YY\u4e0b\u3002\u622a\u56fe\u561b\uff0c\u6700\u540e\u7ed9~<\/p>\n<h3>\u4e8c\u3001SVG\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u6548\u679c<\/h3>\n<p>\u672c\u5904\u7684\u5b9e\u73b0\u539f\u7406\u9002\u7528\u4e8e\u5404\u79cdSVG\u89c4\u5219\u7684\u6216\u4e0d\u89c4\u5219\u7684\u56fe\u5f62\u3002<\/p>\n<p>SVG\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u5173\u952e\u662f\u501f\u52a9\u5143\u7d20<code>&lt;pattern&gt;<\/code>.<\/p>\n<p>\u4e3e\u4e2a\u677f\u6817\uff0c\u5982\u679c\u5b9e\u73b0\u540d\u4e3atest.jpg\u7684\u56fe\u7247<strong>\u5706\u5f62<\/strong>\u6548\u679c\uff0c\u5927\u5c0f<code>100px * 100px<\/code>, \u5219SVG\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<div class=\"zxx_code\">\n<pre>&lt;svg width=\"100\" height=\"100\">\n    &lt;desc>SVG\u5706\u89d2\u6548\u679c&lt;\/desc>\n    &lt;defs>\n        &lt;pattern id=\"raduisImage\" patternUnits=\"userSpaceOnUse\" width=\"100\" height=\"100\">\n            &lt;image xlink:href=\"test.jpg\" x=\"0\" y=\"0\" width=\"625\" height=\"605\" \/>\n        &lt;\/pattern>\n    &lt;\/defs>\n    &lt;circle cx=\"50\" cy=\"50\" r=\"50\" <span style=\"color:#cd0000;\">fill<\/span>=\"url(#raduisImage)\">&lt;\/circle>\n&lt;\/svg><\/pre>\n<\/div>\n<p>\u56fe\u5f62\u5143\u7d20\u90fd\u6709\u4e00\u4e2a<code>fill<\/code>\u5c5e\u6027\uff0c\u8ba9\u5176\u503c<code>url<\/code>\u951a\u5411<code>&lt;pattern&gt;<\/code>\u7684id\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p>\u8fd9\u4e2ademo\u6709\uff0c\u60a8\u53ef\u4ee5\u72e0\u72e0\u5730\u70b9\u51fb\u8fd9\u91cc\uff1a<a class=\"a_link\" href=\"http:\/\/www.zhangxinxu.com\/study\/201406\/image-border-radius-svg.html\" target=\"_blank\">SVG\u5b9e\u73b0\u5706\u89d2\u56fe\u7247demo<\/a><\/p>\n<p>\u6ed1\u52a8\u6ed1\u5757\uff0c\u53ef\u4ee5\u770b\u5230\u6c34\u5e73\/\u5782\u76f4\u65b9\u5411\u5706\u89d2\u5927\u5c0f\u7684\u53d8\u5316\u3002\u53d7\u5236\u4e8e\u56fe\u7247\u9ad8\u5bbd\u6bd4\u4e0d\u4e00\u81f4\uff0c\u5706\u89d2\u7684\u6781\u9650\u5c31\u662f\u89c4\u77e9\u7684\u692d\u5706\uff1a<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/\/image.zhangxinxu.com\/image\/blog\/201801\/2018-01-02_034508.png\" width=\"346\" height=\"350\" alt=\"SVG\u5b9e\u73b0\u7684\u5706\u89d2\u622a\u56fe\u793a\u610f\" class=\"alignnone\" \/><\/p>\n<p>demo\u793a\u610f\u7684\u662f<code>&lt;rect&gt;<\/code>\u5143\u7d20\uff0c\u987e\u540d\u77e9\u5f62\u5143\u7d20\uff0c\u5982\u679c\u60f3\u8981\u5b9e\u73b0\u6b63\u5706\u6548\u679c\uff0c\u8bf7\u4f7f\u7528<code>&lt;circle&gt;<\/code>\u5143\u7d20\uff0c\u5982\u4e0a\u9762\u793a\u610f\u7684SVG\u7684\u4ee3\u7801\u3002\u5f53\u7136\uff0c\u4f60\u8fd8\u53ef\u4ee5\u4f7f\u7528<code>&lt;path&gt;<\/code>\u5143\u7d20\u505a\u4e0d\u89c4\u5219\u586b\u5145\uff0c\u521b\u5efa\u66f4\u6709\u610f\u601d\u7684\u56fe\u5f62\u6548\u679c\u3002<\/p>\n<h3>\u4e09\u3001Canvas\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u6548\u679c<\/h3>\n<p>\u672c\u89c4\u5219\u9002\u7528\u4e8e\u5404\u79cdCanvas\u7ed8\u5236\u7684\u89c4\u5219\u6216\u4e0d\u89c4\u5219\u56fe\u5f62\u3002<\/p>\n<p>Canvas\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u7684\u5173\u952e\u662f\u4f7f\u7528\u201c\u7eb9\u7406\u586b\u5145\u201d\u3002<\/p>\n<p>Canvas\u4e2d\u6709\u4e2a\u540d\u4e3a<code>createPattern<\/code>\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u5df2\u77e5\u5c3a\u5bf8\u7684\u56fe\u7247\u5143\u7d20\u8f6c\u6362\u6210\u7eb9\u7406\u5bf9\u8c61\uff0c\u4f5c\u586b\u5145\u7528\u3002<\/p>\n<p>\u4e3e\u4e2a\u677f\u6817\uff0c\u5982\u679c\u5b9e\u73b0\u540d\u4e3atest.jpg\u7684\u56fe\u7247<strong>\u5706\u5f62<\/strong>\u6548\u679c\uff0c\u5927\u5c0f<code>100px * 100px<\/code>, \u5219\u4e3b\u8981JS\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<div class=\"zxx_code\">\n<pre><span style=\"color:green;\">\/\/ canvas\u5143\u7d20, \u56fe\u7247\u5143\u7d20<\/span>\nvar canvas = document.querySelector(\"#canvas\"), image = new Image();\nvar context = canvas.getContext(\"2d\");\n\nimage.onload = function() {\n    <span style=\"color:green;\">\/\/ \u521b\u5efa\u56fe\u7247\u7eb9\u7406<\/span>\n    var pattern = context.<span style=\"color:#cd0000;\">createPattern<\/span>(image, \"no-repeat\");\n    <span style=\"color:green;\">\/\/ \u7ed8\u5236\u4e00\u4e2a\u5706<\/span>\n    context.arc(50, 50, 50, 0, 2 * Math.PI);\n    <span style=\"color:green;\">\/\/ \u586b\u5145\u7ed8\u5236\u7684\u5706<\/span>\n    context.fillStyle = pattern;\n    context.fill();    \n};\nimage.src = \"test.jpg\";<\/pre>\n<\/div>\n<p>\u8ba9Canvas\u4e0a\u4e0b\u6587\u7684<code>fillStyle<\/code>\u5c5e\u6027\u503c\u7b49\u4e8e\u8fd9\u4e2a\u7eb9\u7406\u5bf9\u8c61\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p>\u8fd9\u4e2ademo\u6709\uff0c\u60a8\u53ef\u4ee5\u72e0\u72e0\u5730\u70b9\u51fb\u8fd9\u91cc\uff1a<a class=\"a_link\" href=\"http:\/\/www.zhangxinxu.com\/study\/201406\/image-border-radius-canvas.html\" target=\"_blank\">Canvas\u5b9e\u73b0\u5706\u89d2\u56fe\u7247demo<\/a><\/p>\n<p>Canvas\u81ea\u5e26\u7684\u77e9\u5f62\u7ed8\u5236API\u662f\u4e0d\u5e26\u5706\u89d2\u5c5e\u6027\u7684\uff0c\u56e0\u6b64\uff0cdemo\u4e2d\u7684\u5706\u89d2\u77e9\u5f62\u4f7f\u7528\u4e86\u81ea\u5b9a\u4e49\u65b9\u6cd5\u3002\u6211\u7b80\u5355\u7785\u4e86\u7785\uff0c\u8981\u5b9e\u73b0\u5782\u76f4\u3001\u6c34\u5e73\u65b9\u5411\u4e0d\u540c\u5706\u89d2\u5927\u5c0f\u7565\u6298\u817e\uff0c\u672c\u7740\u793a\u610f\u7684\u76ee\u7684\uff0c\u5c31\u6ca1\u5927\u52a8\u5e72\u6208\uff0c\u6240\u4ee5demo\u7684\u5706\u89d2\u662f\u5bf9\u79f0\u7684\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/\/image.zhangxinxu.com\/image\/blog\/201801\/2018-01-02_034626.png\" width=\"318\" height=\"304\" alt=\"Canvas\u5b9e\u73b0\u7684\u56fe\u7247\u5706\u89d2\u6548\u679c\" class=\"alignnone\" \/><\/p>\n<p>demo\u793a\u610f\u7684\u662f\u5706\u89d2\u77e9\u5f62\u6548\u679c\uff0c\u5982\u679c\u60f3\u8981\u5b9e\u73b0\u6b63\u5706\u6548\u679c\uff0c\u8bf7\u4f7f\u7528<code>arc<\/code>\u65b9\u6cd5\u7ed8\u5236\uff0c\u5982\u4e0a\u9762\u793a\u610f\u7684JS\u7684\u4ee3\u7801\u3002\u5f53\u7136\uff0c\u4f60\u8fd8\u53ef\u4ee5\u7ed8\u5236\u5176\u4ed6\u4e0d\u89c4\u5219\u9020\u578b\u505a\u586b\u5145\uff0c\u521b\u5efa\u66f4\u6709\u610f\u601d\u7684\u56fe\u5f62\u6548\u679c\u3002<\/p>\n<h3>\u56db\u3001\u610f\u4e49\u4f55\u5728<\/h3>\n<p>CSS3\u5b9e\u73b0\u5706\u89d2\u6548\u679c\u591a\u7b80\u5355\uff0c\u540c\u6837SVG, Canvas\u517c\u5bb9\u6027\u4e5f\u4e0d\u548b\u6ef4\uff0c\u90a3\u4e3a\u4f55\u8fd8\u8981\u6298\u817eSVG, Canvas\u7684\u5706\u89d2\u6548\u679c\u5462\uff1f<\/p>\n<p>\u6211\u53ea\u60f3\u8bf4\uff1a\u201c\u5929\u751f\u6211\u6750\u5fc5\u6709\u7528\uff0c\u5343\u91d1\u6563\u5c3d\u8fd8\u590d\u6765\u201d\u3002<\/p>\n<h3>\u4e94\u3001\u5e74\u4e2d\u7ed3\u8bed<\/h3>\n<p>\u4eca\u59296\u670830\u53f7\uff0c\u4e0a\u534a\u5e74\u7684\u6700\u540e1\u5929\uff0c\u4e8e\u662f\uff0c\u4eca\u5929\u7684\u7ed3\u8bed\u8363\u5347\u4e3a\u5e74\u4e2d\u7ed3\u8bed\u3002<\/p>\n<p>\u5f97\u5f04\u4e00\u53e5\u725b\u903c\u7684\u7ed3\u8bed\u538b\u573a\u554a\uff0c\u554a\uff0c\u6709\u4e86\uff1a\u201c\u4e16\u754c\u65e2\u4e0d\u662f\u8584\u7684\uff0c\u4e5f\u4e0d\u662f\u539a\u7684\uff0c\u5f52\u6839\u7ed3\u5e95\u662f\u5e73\u7684\u3002\u201d\u3002<\/p>\n<p>\u55ef\u54ea\uff0c\u6700\u540e\uff0c\u9644\u4e0a\u4e00\u5f00\u59cb\u604b\u604b\u4e0d\u820d\u653e\u7f6e\u7684\u622a\u56fe\uff08\u8fd170K\uff09\uff0c\u6db5\u76d6\uff1a\u56fe\u7247\u8986\u76d6\uff0cCSS3, SVG, Canvas\u5b9e\u73b0\u6548\u679c\u548c\u4ee3\u7801\u5c55\u793a\uff08<em>\u70b9\u51fb\u7070\u8272\u80cc\u666f\u5757\u663e\u793a<\/em>\uff09\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/\/image.zhangxinxu.com\/image\/blog\/201406\/2014-06-30_191630.png\" width=\"660\" height=\"1712\" alt=\"\u5404\u4e2a\u65b9\u6cd5\u5b9e\u73b0\u5706\u89d2\u6548\u679c\u4ee5\u53ca\u6e90\u4ee3\u7801\u5c55\u793a\"\/><\/p>\n<p>\u672c\u6587\u4e3a\u539f\u521b\u6587\u7ae0\uff0c\u542b\u811a\u672c\u884c\u4e3a\uff0c\u4f1a\u7ecf\u5e38\u66f4\u65b0\u77e5\u8bc6\u70b9\u4ee5\u53ca\u4fee\u6b63\u4e00\u4e9b\u9519\u8bef\uff0c\u56e0\u6b64\u8f6c\u8f7d\u8bf7\u4fdd\u7559\u539f\u51fa\u5904\uff0c\u65b9\u4fbf\u6eaf\u6e90\uff0c\u907f\u514d\u9648\u65e7\u9519\u8bef\u77e5\u8bc6\u7684\u8bef\u5bfc\uff0c\u540c\u65f6\u6709\u66f4\u597d\u7684\u9605\u8bfb\u4f53\u9a8c\u3002<br \/>\n\u672c\u6587\u5730\u5740\uff1a<a href=\"http:\/\/www.zhangxinxu.com\/wordpress\/?p=4242\">http:\/\/www.zhangxinxu.com\/wordpress\/?p=4242<\/a><\/p>\n<p>\uff08\u672c\u7bc7\u5b8c\uff09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b9e\u73b0\u56fe\u7247\u5706\u89d2\u7684\u65b9\u6cd5\u5f88\u591a\uff0c\u56fe\u7247\u8986\u76d6\uff0cCSS3\u5706\u89d2\uff0cSVG, Canvas\u90fd\u53ef\u4ee5\u5b9e\u73b0\uff0c\u524d\u4e24\u4e2a\u5927\u5bb6\u53ef\u80fd\u90fd\u6bd4\u8f83\u719f\u6089\uff0c\u8fd9\u91cc\uff0c\u7740\u91cd\u4ecb\u7ecd\u540e\u97622\u79cd\u6280\u672f\u5b9e\u73b0\u3002\u5e0c\u671b\u5728\u67d0\u4e00\u65f6\u523b\u5bf9\u6709\u9700\u8981\u7684\u540c\u884c\u80fd\u6709\u5e2e\u52a9\u3002\u5fc5\u987b\u7684\uff0c\u6709demo, \u6709\u622a\u56fe\uff0c\u6709\u6e90\u4ee3\u7801\u5c55\u793a\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[896,895],"tags":[339,53,642,889,54,840],"_links":{"self":[{"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/posts\/4242"}],"collection":[{"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/comments?post=4242"}],"version-history":[{"count":0,"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/posts\/4242\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/media?parent=4242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/categories?post=4242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhangxinxu.com\/wordpress\/wp-json\/wp\/v2\/tags?post=4242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}