首頁 web前端 H5教程 使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例_html5教程技巧

使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例_html5教程技巧

May 23, 2016 pm 02:20 PM
canvas html5

圆角矩形是由四段线条和四个1/4圆弧组成,拆解如下。
2016322111336083.jpg (600×425)

因为我们要写的是函数而不是一个固定的圆角矩形,所以这里列出的是函数需要的参数。分析好之后,直接敲出代码。

JavaScript Code复制内容到剪贴板
  1. nbsp;html>   
  2. "zh">   
  3.   
  4.      "UTF-8">   
  5.     圆角矩形   
  6.     
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.        
  10.   
  11.   
  12. "canvas-warp">   
  13.     "canvas">   
  14.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
  15.        
  
  •   
  • <script> </script>
  •     window.onload = function(){   
  •         var canvas = document.getElementById("canvas");   
  •         canvas.width = 800;   
  •         canvas.height = 600;   
  •         var context = canvas.getContext("2d");   
  •         context.fillStyle = "#FFF";   
  •         context.fillRect(0,0,800,600);   
  •   
  •         drawRoundRect(context, 200, 100, 400, 400, 50);   
  •         context.strokeStyle = "#0078AA";   
  •         context.stroke();   
  •     }   
  •   
  •     function drawRoundRect(cxt, x, y, width, height, radius){   
  •         cxt.beginPath();   
  •         cxt.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);   
  •         cxt.lineTo(width - radius + x, y);   
  •         cxt.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);   
  •         cxt.lineTo(width + x, height + y - radius);   
  •         cxt.arc(width - radius + x, height - radius + y, radius, 0, Math.PI * 1 / 2);   
  •         cxt.lineTo(radius + x, height +y);   
  •         cxt.arc(radius + x, height - radius + y, radius, Math.PI * 1 / 2, Math.PI);   
  •         cxt.closePath();   
  •     }   
  •   
  •   
  •   
  • 运行结果:
    2016322111413272.jpg (850×500)

    建议大家自己动手绘制一个圆角矩形,这样有助于对路径的掌握。

    下面我们用这个函数来做点其他的事情。

    绘制2048游戏界面
    对代码不做过多讲解,大家自己研究研究,建议自己动手先尝试写一下。因为我这里采用的是硬编码,所以不是很好,大家也可尝试优化一下。

    JavaScript Code复制内容到剪贴板
    1. nbsp;html>   
    2. "zh">   
    3.   
    4.      "UTF-8">   
    5.     2048游戏界面   
    6.     
    7.         body { background: url("./images/bg3.jpg") repeat; }  
    8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
    9.        
    10.   
    11.   
    12. "canvas-warp">   
    13.     "canvas">   
    14.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    15.        
      
  •   
  • <script> </script>
  •     window.onload = function(){   
  •         var canvas = document.getElementById("canvas");   
  •         canvas.width = 800;   
  •         canvas.height = 600;   
  •         var context = canvas.getContext("2d");   
  •         context.fillStyle = "#FFF";   
  •         context.fillRect(0,0,800,600);   
  •   
  •         drawRoundRect(context, 200, 100, 400, 400, 5);   
  •         context.fillStyle = "#AA7B41";   
  •         context.strokeStyle = "#0078AA";   
  •         context.stroke();   
  •         context.fill();   
  •   
  •         for(var i = 1; i 
  •             for(var j = 1; j 
  •                 drawRoundRect(context, 200 + 16 * i + 80 * (i - 1), 100 + 16 * j + 80 * (j - 1), 80, 80, 5);   
  •                 context.fillStyle = "#CCBFB4";   
  •                 context.strokeStyle = "#0078AA";   
  •                 context.stroke();   
  •                 context.fill();   
  •             }   
  •         }   
  •     }   
  •   
  •     function drawRoundRect(cxt, x, y, width, height, radius){   
  •         cxt.beginPath();   
  •         cxt.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);   
  •         cxt.lineTo(width - radius + x, y);   
  •         cxt.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);   
  •         cxt.lineTo(width + x, height + y - radius);   
  •         cxt.arc(width - radius + x, height - radius + y, radius, 0, Math.PI * 1 / 2);   
  •         cxt.lineTo(radius + x, height +y);   
  •         cxt.arc(radius + x, height - radius + y, radius, Math.PI * 1 / 2, Math.PI);   
  •         cxt.closePath();   
  •     }   
  •   
  •   
  •   
  •   
  • 运行结果:
    2016322111454844.jpg (850×500)

    这个圆角矩形的函数写好之后,可以自己封装进JS文件里,以后遇到什么好的函数都可以放进去,这样积累下来,这个文件就是一套属于自己的图形库和游戏引擎了,是不是非常的酷?

    其实游戏制作是Canvas的主要用途,但是要知道每一个游戏设计师都是一个艺术家。


    绘制微信对话框
    大家可以尝试着使用Canvas绘制一下微信聊天界面,作为练习与巩固。
    2016322111559183.jpeg (300×534)

    这里使用到了绘制矩形,绘制圆角矩形,绘制多线条图形,填充颜色的一些知识。还有一些 Canvas文本API 我们并没有说到,所以大家只要能绘制出一个大概的界面就算合格了。能够绘制出来,也就基本掌握了Canvas API。

    其实上述对话是生成出来的——“微信界面生成器网页版”,可谓是微商神器。是不是非常的酷?
    2016322111621042.jpg (850×500)

    这只是暑假花两天时间写的最初版本,还尚未达到发布的地步,在我写本节的时候,这个网页的界面还正在优化中。大家可以尝试自己动手做做,也可以关注和参考我的这个小项目github:微信界面生成器。本节就不再重复给出界面代码了。

    好了,学到这里基本上已经学完了所有基本的Canvas绘图的api,大家拿起自己的画笔,自由的发挥吧!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1664
    14
    CakePHP 教程
    1423
    52
    Laravel 教程
    1318
    25
    PHP教程
    1269
    29
    C# 教程
    1248
    24
    HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

    HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

    HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

    這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

    HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

    HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

    HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

    HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

    HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

    HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

    HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

    HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

    HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

    HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

    在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

    HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

    See all articles