


So erstellen Sie einen schwarzen Hintergrund mit Spezialeffekten und ein Feuerwerk aus Trümmern auf Leinwand
Dieses Mal zeige ich Ihnen, wie Sie mit Leinwand ein Krümelfeuerwerk mit schwarzem Hintergrund und Spezialeffekten herstellen. Welche Vorsichtsmaßnahmen sind zu beachten? ist ein praktischer Fall.
css<canvas id="cas" style=" background-color :rgba(0,5,24,1)" width="1235" height="680">浏览器不支持canvas</canvas><div class="city"> <img src="city.png" alt=""></div><img src="moon.png" alt="" id="moon" style=" visibility : hidden;"><div style="display:none"> <div class="shape">新年快乐</div> <div class="shape">阖家欢乐</div> <div class="shape">万事如意</div> <div class="shape">心想事成</div> </div>
body { margin: 0; padding: 0; overflow: versteckt;
}.city { width: 100%; bottom: 0px; z-index: 100;}.city img { width: 100%;
}
js
var canvas = document.getElementById("cas");var ocas = document.createElement("canvas");var octx = ocas.getContext("2d");var ctx = canvas.getContext("2d"); ocas.width = canvas.width = window.innerWidth; ocas.height = canvas.height = window.innerHeight;var bigbooms = [];window.onload = function () { initAnimate() }function initAnimate() { drawBg(); lastTime = new Date(); animate(); }var lastTime;function animate() { ctx.save(); ctx.fillStyle = "rgba(0,5,24,0.1)"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.restore(); var newTime = new Date(); if (newTime - lastTime > 500 + (window.innerHeight - 767) / 2) { var random = Math.random() * 100 > 2 ? true : false; var x = getRandom(canvas.width / 5, canvas.width * 4 / 5); var y = getRandom(50, 200); if (random) { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: x, y: y }); bigbooms.push(bigboom) } else { var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: canvas.width / 2, y: 200 }, document.querySelectorAll(".shape")[parseInt(getRandom(0, document.querySelectorAll( ".shape").length))]); bigbooms.push(bigboom) } lastTime = newTime; } stars.foreach(function () { this.paint(); }) drawMoon(); bigbooms.foreach(function (index) { var that = this; if (!this.dead) { this._move(); this._drawLight(); } else { this.booms.foreach(function (index) { if (!this.dead) { this.moveTo(index); } else if (index === that.booms.length - 1) { bigbooms[bigbooms.indexOf(that)] = null; } }) } }); raf(animate); }function drawMoon() { var moon = document.getElementById("moon"); var centerX = canvas.width - 200, centerY = 100, width = 80; if (moon.complete) { ctx.drawImage(moon, centerX, centerY, width, width) } else { moon.onload = function () { ctx.drawImage(moon, centerX, centerY, width, width) } } var index = 0; for (var i = 0; i < 10; i++) { ctx.save(); ctx.beginPath(); ctx.arc(centerX + width / 2, centerY + width / 2, width / 2 + index, 0, 2 * Math.PI); ctx.fillStyle = "rgba(240,219,120,0.005)"; index += 2; ctx.fill(); ctx.restore(); } }Array.prototype.foreach = function (callback) { for (var i = 0; i < this.length; i++) { if (this[i] !== null) callback.apply(this[i], [i]) } }var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; canvas.onclick = function () { var x = event.clientX; var y = event.clientY; var bigboom = new Boom(getRandom(canvas.width / 3, canvas.width * 2 / 3), 2, "#FFF", { x: x, y: y }); bigbooms.push(bigboom) }var Boom = function (x, r, c, boomArea, shape) { this.booms = []; this.x = x; this.y = (canvas.height + r); this.r = r; this.c = c; this.shape = shape || false; this.boomArea = boomArea; this.theta = 0; this.dead = false; this.ba = parseInt(getRandom(80, 200)); } Boom.prototype = { _paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = this.c; ctx.fill(); ctx.restore(); }, _move: function () { var dx = this.boomArea.x - this.x, dy = this.boomArea.y - this.y; this.x = this.x + dx * 0.01; this.y = this.y + dy * 0.01; if (Math.abs(dx) <= this.ba && Math.abs(dy) <= this.ba) { if (this.shape) { this._shapBoom(); } else this._boom(); this.dead = true; } else { this._paint(); } }, _drawLight: function () { ctx.save(); ctx.fillStyle = "rgba(255,228,150,0.3)"; ctx.beginPath(); ctx.arc(this.x, this.y, this.r + 3 * Math.random() + 1, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); }, _boom: function () { var fragNum = getRandom(30, 200); var style = getRandom(0, 10) >= 5 ? 1 : 2; var color; if (style === 1) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var fanwei = parseInt(getRandom(300, 400)); for (var i = 0; i < fragNum; i++) { if (style === 2) { color = { a: parseInt(getRandom(128, 255)), b: parseInt(getRandom(128, 255)), c: parseInt(getRandom(128, 255)) } } var a = getRandom(-Math.PI, Math.PI); var x = getRandom(0, fanwei) * Math.cos(a) + this.x; var y = getRandom(0, fanwei) * Math.sin(a) + this.y; var radius = getRandom(0, 2) var frag = new Frag(this.x, this.y, radius, color, x, y); this.booms.push(frag); } }, _shapBoom: function () { var that = this; putValue(ocas, octx, this.shape, 5, function (dots) { var dx = canvas.width / 2 - that.x; var dy = canvas.height / 2 - that.y; for (var i = 0; i < dots.length; i++) { color = { a: dots[i].a, b: dots[i].b, c: dots[i].c } var x = dots[i].x; var y = dots[i].y; var radius = 1; var frag = new Frag(that.x, that.y, radius, color, x - dx, y - dy); that.booms.push(frag); } }) } }function putValue(canvas, context, ele, dr, callback) { context.clearRect(0, 0, canvas.width, canvas.height); var img = new Image(); if (ele.innerHTML.indexOf("img") >= 0) { img.src = ele. getElementsByTagName ("img")[0].src; imgload(img, function () { context.drawImage(img, canvas.width / 2 - img.width / 2, canvas.height / 2 - img.width / 2); dots = getimgData(canvas, context, dr); callback(dots); }) } else { var text = ele.innerHTML; context.save(); var fontSize = 200; context.font = fontSize + "px 宋体 bold"; context.textAlign = "center"; context.textBaseline = "middle"; context.fillStyle = "rgba(" + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + "," + parseInt(getRandom(128, 255)) + " , 1)"; context.fillText(text, canvas.width / 2, canvas.height / 2); context.restore(); dots = getimgData(canvas, context, dr); callback(dots); } }function imgload(img, callback) { if (img.complete) { callback.call(img); } else { img.onload = function () { callback.call(this); } } }function getimgData(canvas, context, dr) { var imgData = context.getImageData(0, 0, canvas.width, canvas.height); context.clearRect(0, 0, canvas.width, canvas.height); var dots = []; for (var x = 0; x < imgData.width; x += dr) { for (var y = 0; y < imgData.height; y += dr) { var i = (y * imgData.width + x) * 4; if (imgData.data[i + 3] > 128) { var dot = { x: x, y: y, a: imgData.data[i], b: imgData.data[i + 1], c: imgData.data[i + 2] }; dots.push(dot); } } } return dots; }function getRandom(a, b) { return Math.random() * (b - a) + a; }var maxRadius = 1, stars = [];function drawBg() { for (var i = 0; i < 100; i++) { var r = Math.random() * maxRadius; var x = Math.random() * canvas.width; var y = Math.random() * 2 * canvas.height - canvas.height; var star = new Star(x, y, r); stars.push(star); star.paint() } }var Star = function (x, y, r) { this.x = x; this.y = y; this.r = r; } Star.prototype = { paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fillStyle = "rgba(255,255,255," + this.r + ")"; ctx.fill(); ctx.restore(); } }var focallength = 250;var Frag = function (centerX, centerY, radius, color, tx, ty) { this.tx = tx; this.ty = ty; this.x = centerX; this.y = centerY; this.dead = false; this.centerX = centerX; this.centerY = centerY; this.radius = radius; this.color = color; } Frag.prototype = { paint: function () { ctx.save(); ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI); ctx.fillStyle = "rgba(" + this.color.a + "," + this.color.b + "," + this.color.c + ",1)"; ctx.fill() ctx.restore(); }, moveTo: function (index) { this.ty = this.ty + 0.3; var dx = this.tx - this.x, dy = this.ty - this.y; this.x = Math.abs(dx) < 0.1 ? this.tx : (this.x + dx * 0.1); this.y = Math.abs(dy) < 0.1 ? this.ty : (this.y + dy * 0.1); if (dx === 0 && Math.abs(dy) <= 80) { this.dead = true; } this.paint(); } }
Empfohlene Lektüre:
Wie man ein Cyan-Feuerwerk mit schwarzem Hintergrund auf Leinwand machtWie man Rot mit schwarzem Hintergrund macht auf Leinwand FeuerwerkDas obige ist der detaillierte Inhalt vonSo erstellen Sie einen schwarzen Hintergrund mit Spezialeffekten und ein Feuerwerk aus Trümmern auf Leinwand. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Standard-Taskleiste von Win11 ist hellblau, was schöner ist. Einige Freunde haben jedoch festgestellt, dass die untere Statusleiste von Win11 plötzlich schwarz wurde. Dies kann daran liegen, dass das Design oder die Hintergrundfarbe geändert wurde. Die Statusleiste am unteren Rand von win11 wird schwarz: 1. Klicken Sie zunächst auf das untere Startmenü und öffnen Sie „Einstellungen“ 2. Geben Sie dann in der linken Spalte die Einstellungen „Personalisierung“ ein. 3. Öffnen Sie anschließend die Einstellungen „Farbe“. 4. Deaktivieren Sie nach der Eingabe den „Transparenzeffekt“ (wenn er aktiviert ist, ist unser Desktop schwarz und die Statusleiste ist schwarz). 5. Wenn das Hintergrundbild nicht schwarz ist, ändern Sie den Auswahlmodus auf „Helle Farbe“. . Dürfen. 6. Wenn Ihnen andere Farben gefallen, können Sie frei zwischen den Themenfarben wählen.

Microsoft lädt WindowsInsider-Projektmitglieder in den Canary- und Dev-Kanälen ein, die neue Paint-Anwendung zu testen und zu erleben. Die neueste Versionsnummer ist 11.2306.30.0. Die bemerkenswerteste neue Funktion dieses Versionsupdates ist die Ein-Klick-Ausschneidefunktion. Benutzer müssen nur einmal klicken, um den Hintergrund automatisch zu entfernen und den Hauptteil des Bildes hervorzuheben, was es Benutzern erleichtert, nachfolgende Vorgänge durchzuführen. Der gesamte Schritt ist sehr einfach. Der Benutzer importiert das Bild in die neue Layoutanwendung und klickt dann auf die Schaltfläche „Hintergrund entfernen“ in der Symbolleiste. Der Benutzer kann auch ein Rechteck verwenden, um den zu entfernenden Bereich auszuwählen der Hintergrund.

Eine der vielen Barrierefreiheitsfunktionen, die Apple auf iPhone und iPad integriert hat, sind Hintergrundgeräusche. Diese Geräusche sollen Ihnen helfen, konzentriert und ruhig zu bleiben und Ablenkungen zu minimieren, wenn Sie mit etwas beschäftigt sind. Zu den bereitgestellten Hintergrundgeräuschen gehören ausgewogene, helle und dunkle Geräusche sowie natürliche Geräusche wie Meer, Regen und Bäche. Alle Töne können so eingestellt werden, dass sie im Hintergrund abgespielt werden, um unerwünschte Umgebungs- oder Außengeräusche zu überdecken, und Töne werden in andere Audio- und Systemtöne eingemischt oder darunter ausgeblendet. Hintergrundton auf iPhone und iPad aktivieren Die folgenden Schritte beschreiben, wie Sie Hintergrundton auf iPhone und iPad mit iOS15/iPadOS15 und höher aktivieren. auf dem iPhone ori

Das Ersetzen des PPT-Hintergrunds ist ein wichtiger Vorgang, der den visuellen Stil der Präsentation schnell vereinheitlichen kann. Sie können den Hintergrund Ihrer gesamten Präsentation schnell ersetzen, indem Sie den Folienmaster ändern oder die Funktion „Hintergrund formatieren“ verwenden. Darüber hinaus bieten einige PPT-Versionen auch eine Batch-Ersetzungsfunktion, mit der der Hintergrund aller Folien problemlos ersetzt werden kann. Beim Austausch des Hintergrunds sollten Sie darauf achten, einen Hintergrund zu wählen, der zum Thema der Präsentation passt, und darauf achten, dass die Klarheit und Auflösung des Hintergrunds den Anforderungen entspricht.

1. Öffnen Sie die Meitu Xiu Xiu-Software, wählen Sie [Bildverschönerung] und importieren Sie Fotos aus dem Album. 2. Klicken Sie in der unteren Symbolleiste auf [Schneiden] und wählen Sie die Funktion [Hintergrundersetzung]. 3. Wählen Sie in der Option [Hintergrund] die gewünschte Hintergrundfarbe aus dem Vollfarbfeld aus oder laden Sie ein benutzerdefiniertes Bild hoch. 4. Nachdem Sie die Auswahl bestätigt haben, klicken Sie auf [Speichern], um die Änderung der Hintergrundfarbe abzuschließen.

Zu den Versionen von html2canvas gehören html2canvas v0.x, html2canvas v1.x usw. Detaillierte Einführung: 1. html2canvas v0.x, eine frühe Version von html2canvas. Die neueste stabile Version ist v0.5.0-alpha1. Es handelt sich um eine ausgereifte Version, die in vielen Projekten weit verbreitet und verifiziert wurde. 2. html2canvas v1.x, dies ist eine neue Version von html2canvas.

Die Go-Sprache wurde bei Google geboren, um die Probleme der Komplexität und unzureichenden Parallelitätsunterstützung von C++ zu lösen. Die ursprüngliche Absicht besteht darin, eine einfache, leicht zu erlernende, effiziente Parallelität, speichersichere und plattformübergreifende Sprache zu schaffen, um die Produktivität von Programmierern zu verbessern, zuverlässige und skalierbare Systeme aufzubauen und die Portierung und gemeinsame Nutzung von Code zu fördern.

Für die Verwendung von Canvas zum Zeichnen von Diagrammen und Animationseffekten in Uniapp sind bestimmte Codebeispiele erforderlich. 1. Einführung Mit der Beliebtheit mobiler Geräte müssen immer mehr Anwendungen verschiedene Diagramme und Animationseffekte auf dem mobilen Endgerät anzeigen. Als plattformübergreifendes Entwicklungsframework auf Basis von Vue.js bietet uniapp die Möglichkeit, Canvas zum Zeichnen von Diagrammen und Animationseffekten zu verwenden. In diesem Artikel wird vorgestellt, wie Uniapp Canvas verwendet, um Diagramm- und Animationseffekte zu erzielen, und es werden spezifische Codebeispiele gegeben. 2. Leinwand
