Heim Web-Frontend H5-Tutorial Ausführliche Erklärung zum Festlegen von Farbe und Transparenz beim Zeichnen von HTML5 Canvas_html5-Tutorial-Fähigkeiten

Ausführliche Erklärung zum Festlegen von Farbe und Transparenz beim Zeichnen von HTML5 Canvas_html5-Tutorial-Fähigkeiten

May 16, 2016 pm 03:45 PM
canvas html5 透明度 颜色

Farbe angeben

Schwarz ist die Standardfarbe für Canvas-Zeichnungen. Wenn Sie sie in eine andere Farbe ändern möchten, müssen Sie die Farbe vor dem eigentlichen Zeichnen angeben.

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1. ctx.StrokeStyle = Farbe

Geben Sie die Farbe der gezeichneten Linie an:

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1. ctx.fillStyle = color

Geben Sie die Farbe der Füllung an:
Sehen wir uns ein praktisches Beispiel an:

JavaScript

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1. onload = function() {
  2. draw();
  3. };
  4. Funktion draw() {
  5. var canvas = document.getElementById('c1');
  6. if ( ! canvas || ! canvas.getContext ) { return false ; }
  7. var ctx = canvas.getContext('2d');
  8. ctx.beginPath();
  9. ctx.fillStyle = 'rgb(192, 80, 77)'; // Rot
  10. ctx.arc(70, 45, 35, 0, Math.PI*2, false);
  11. ctx.fill();
  12. ctx.beginPath();
  13. ctx.fillStyle = 'rgb(155, 187, 89)'; // Grün
  14. ctx.arc(45, 95, 35, 0, Math.PI*2, false);
  15. ctx.fill();
  16. ctx.beginPath();
  17. ctx.fillStyle = 'rgb(128, 100, 162)'; // Lila
  18. ctx.arc(95, 95, 35, 0, Math.PI*2, false);
  19. ctx.fill();
  20. }

Der Effekt ist wie folgt:
2016325112217008.png (142×142)

Transparenz angeben

Genau wie bei gewöhnlichem CSS können wir bei der Angabe der Farbe auch einen Alpha-Wert angeben (dieser wird jedoch nicht häufig verwendet und wurde vor IE9 nicht unterstützt). Schauen Sie sich den Code an:

JavaScript

JavaScript-CodeInhalt in die Zwischenablage kopieren
  1. onload = function() {   
  2.   draw();   
  3. };   
  4. Funktion draw() {   
  5.   var canvas = document.getElementById('c1');   
  6.   if ( ! canvas || ! canvas.getContext ) { return false ; }   
  7.   var ctx = canvas.getContext('2d');   
  8.   ctx.beginPath();   
  9.   ctx.fillStyle = 'rgba(192, 80, 77, 0.7)'//   
  10.   ctx.arc(70, 45, 35, 0, Math.PI*2, false);   
  11.   ctx.fill();   
  12.   ctx.beginPath();   
  13.   ctx.fillStyle = 'rgba(155, 187, 89, 0.7)'//   
  14.   ctx.arc(45, 95, 35, 0, Math.PI*2, false);   
  15.   ctx.fill();   
  16.   ctx.beginPath();   
  17.   ctx.fillStyle = 'rgba(128, 100, 162, 0.7)'//   
  18.   ctx.arc(95, 95, 35, 0, Math.PI*2, false);   
  19.   ctx.fill();   
  20. }   

结果就是下面这样:
2016325112248089.png (142×142)

和上面的代码基本没变化,就是把rgb(r, g, b)变成了rgba(r, g, b, a)而已,a的值也是0~1,0表示完全透明1则是完全不透明(所以alpha的值实际上是“不透明度“).


全局透明globalAlpha
这个也是很简单的一个属性,默认值为1.0,代表完全不透明,取值范围是0.0(完全透明)~1.0。这个属性与阴影设置是一样的, 如果不想针对全局设置不透明度, 就得在下次绘制前重置globalAlpha.

总结一下:基于状态的属性有哪些?

——globalAlpha

——globalCompositeOpeartion

——StrokeStyle

——textAlign,textBaseline

——lineCap,lineJoin,lineWidth,miterLimit

——fillStyle

——Schriftart

——shadowBlur,shadowColor,shadowOffsetX,shadowOffsetY
我们通过一个代码,来体验一下globalAlpha的神奇之处~

JavaScript-Code复制内容到剪贴板
  1. <!DOCTYPE html>   
  2. <html lang="zh">   
  3. <head>   
  4.     <meta charset="UTF-8">   
  5.     <title>全局透明</title>   
  6.     <style>   
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.     </style>   
  10. </head>   
  11. <body>   
  12. <div id="canvas-warp">   
  13.     <canvas id="canvas">   
  14.         你的浏览器居然不支持Canvas?!赶快换一个吧!!   
  15.     </canvas>   
  16. </div>   
  17.   
  18. <script>   
  19.     window.onload = Funktion(){   
  20.         var canvas = document.getElementById("canvas");   
  21.         canvas.width = 800;   
  22.         canvas.height = 600;   
  23.         var context = canvas.getContext("2d");   
  24.         context.fillStyle = "#FFF";   
  25.         context.fillRect(0,0,800,600);   
  26.   
  27.         context.globalAlpha = 0.5;   
  28.   
  29.         for(var i=0; i<=50; i ){   
  30.             var R = Math.floor(Math.random() * 255);   
  31.             var G = Math.floor(Math.random() * 255);   
  32.             var B = Math.floor(Math.random() * 255);   
  33.   
  34.             context.fillStyle = "rgb("   R   ","   G   " ,"   B   ")";   
  35.   
  36.             context.beginPath();   
  37.             context.arc(Math.random() * canvas.width, Math.random() * canvas.height, Math.random() * 100, 0, Math.PI * 2);   
  38.             context.fill();   
  39.         }   
  40.     };   
  41. </script>   
  42. </body>   
  43. </html>  

运行结果:
2016325112320763.jpg (850×500)

是不是非常的酷?终于有点艺术家的范儿了吧.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Verschachtelte Tabelle in HTML

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Tabellenrahmen in HTML

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

HTML-Rand links

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

HTML-Tabellenlayout

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Text in HTML verschieben

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

HTML-geordnete Liste

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

HTML-Onclick-Button

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

HTML-Eingabeplatzhalter

See all articles