Canvas kompozitsiyalash


ULASHISH

globalCompositeOperation xususiyati

globalCompositeOperation xususiyati yangi shakllarni chizishda qo‘llaniladigan kompozitsiya amalining turini belgilaydi. Oldingi boblarda yangi chizmalar bir-birining ustiga joylashtirilgan edi. globalCompositeOperation xususiyati yordamida yangi shakllar bilan nima qilishni o‘zimiz hal qilishimiz mumkin.

Keling, bir nechta misolni ko‘rib chiqamiz!


"source-over" qiymati

"source-over" qiymati standart hisoblanadi. U yangi shakllarni mavjud kontent ustiga chizadi.

Misol

globalCompositeOperation xususiyatini "source-over" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "source-over"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"source-out" qiymati

"source-out" qiymati yangi shakllarni faqat mavjud kontent bilan ustma-ust tushmaydigan joylarda chizadi.

Misol

globalCompositeOperation xususiyatini "source-out" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "source-out"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"destination-over" qiymati

"destination-over" qiymati yangi shakllarni mavjud kontent ortiga chizadi.

Misol

globalCompositeOperation xususiyatini "destination-over" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "destination-over"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »


"destination-atop" qiymati

"destination-atop" qiymati mavjud kontentni faqat yangi shakl bilan ustma-ust tushgan joylarda saqlab qoladi. Yangi shakl mavjud kontent ortiga chiziladi.

Misol

globalCompositeOperation xususiyatini "destination-atop" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "destination-atop"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"lighter" qiymati

"lighter" qiymati ikkala shakl ustma-ust tushgan joyda rangni yorqinroq qiladi.

Misol

globalCompositeOperation xususiyatini "lighter" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "lighter"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"copy" qiymati

"copy" qiymati natijasida faqat yangi shakl ko‘rsatiladi.

Misol

globalCompositeOperation xususiyatini "copy" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "copy"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"xor" qiymati

"xor" qiymati natijasida shakllar ikkalasi ustma-ust tushgan joyda shaffof bo‘ladi, qolgan barcha joylarda esa odatdagidek chiziladi.

Misol

globalCompositeOperation xususiyatini "xor" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "xor"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"multiply" qiymati

"multiply" qiymati natijasida tasvir to‘qroq bo‘ladi. U yuqori qatlam piksellarini pastki qatlam piksellariga ko‘paytiradi.

Misol

globalCompositeOperation xususiyatini "multiply" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "multiply"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"screen" qiymati

"screen" qiymati natijasida tasvir ochroq bo‘ladi. Piksellar invertlanadi, so‘ngra ko‘paytiriladi va yana invertlanadi ("multiply" ning teskarisi).

Misol

globalCompositeOperation xususiyatini "screen" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "screen"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"darken" qiymati

"darken" qiymati ikkala shakl ustma-ust tushgan joyda rangni to‘qroq qiladi (ikkala qatlamning eng to‘q piksellarini saqlab qoladi).

Misol

globalCompositeOperation xususiyatini "darken" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "darken"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"lighten" qiymati

"lighten" qiymati ikkala shakl ustma-ust tushgan joyda rangni ochroq qiladi (ikkala qatlamning eng och piksellarini saqlab qoladi).

Misol

globalCompositeOperation xususiyatini "lighten" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "lighten"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"hue" qiymati

"hue" qiymati yuqori qatlamning rang tonini (hue) oladi va pastki qatlamning yorqinligi (luma) hamda to‘yinganligini (chroma) saqlab qoladi.

Misol

globalCompositeOperation xususiyatini "hue" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "hue"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

"luminosity" qiymati

"luminosity" qiymati yuqori qatlamning yorqinligini (luma) oladi va pastki qatlamning rang toni (hue) hamda to‘yinganligini (chroma) saqlab qoladi.

Misol

globalCompositeOperation xususiyatini "luminosity" ga o‘rnating. So‘ngra bir-birining ustiga tushadigan ikkita to‘rtburchak chizing:

Your browser does not support the HTML5 canvas tag.
<script> const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.globalCompositeOperation = "luminosity"; // Draw two overlapping rectangles ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); ctx.fillStyle = "red"; ctx.fillRect(40, 40, 100, 100); </script>
O‘zingiz sinab ko‘ring »

globalCompositeOperation xususiyatining qiymatlari

globalCompositeOperation xususiyati quyidagi qiymatlarni qabul qilishi mumkin:

Qiymat Tavsif
source-over Standart qiymat. Yangi shakllarni mavjud kontent ustiga chizadi
source-in Yangi shakllarni faqat yangi shakl va mavjud kontent ustma-ust tushgan joylarda chizadi. Qolgan hamma narsa shaffof qilinadi
source-out Yangi shakllarni faqat mavjud kontent bilan ustma-ust tushmaydigan joylarda chizadi
source-atop Yangi shakllarni faqat mavjud kontent bilan ustma-ust tushadigan joylarda chizadi
destination-over Yangi shakllarni mavjud kontent ortiga chizadi
destination-in Mavjud kontentni faqat yangi shakl va mavjud kontent ustma-ust tushgan joylarda saqlab qoladi. Qolgan hamma narsa shaffof qilinadi
destination-out Mavjud kontentni faqat yangi shakl bilan ustma-ust tushmaydigan joylarda saqlab qoladi
destination-atop Mavjud kontentni faqat yangi shakl bilan ustma-ust tushgan joylarda saqlab qoladi. Yangi shakl mavjud kontent ortiga chiziladi
lighter Ikkala shakl ustma-ust tushgan joyda rang yorqinroq bo‘ladi
copy Faqat yangi shaklni ko‘rsatadi
xor Shakllar ikkalasi ustma-ust tushgan joyda shaffof bo‘ladi, qolgan barcha joylarda esa odatdagidek chiziladi
multiply Yuqori qatlam piksellarini pastki qatlam piksellariga ko‘paytiradi. Natijada tasvir to‘qroq bo‘ladi
screen Piksellarni invertlaydi, so‘ngra ko‘paytiradi va yana invertlaydi. Natijada tasvir ochroq bo‘ladi ("multiply" ning teskarisi)
overlay multiply va screen ning birikmasi. Asosiy qatlamning to‘q qismlari yanada to‘qroq, och qismlari esa yanada ochroq bo‘ladi
darken Ikkala qatlamning eng to‘q piksellarini saqlab qoladi
lighten Ikkala qatlamning eng och piksellarini saqlab qoladi
color-dodge Pastki qatlamni invertlangan yuqori qatlamga bo‘ladi
color-burn Invertlangan pastki qatlamni yuqori qatlamga bo‘ladi, so‘ngra natijani invertlaydi
hard-light "overlay" kabi, lekin yuqori va pastki qatlamlarning o‘rni almashtirilgan
soft-light "hard-light" ning yumshoqroq varianti
difference Har doim musbat qiymat olish uchun pastki qatlamni yuqori qatlamdan ayiradi - yoki aksincha
exclusion "difference" kabi, lekin kontrasti pastroq
hue Yuqori qatlamning rang tonini (hue) oladi va pastki qatlamning yorqinligi (luma) hamda to‘yinganligini (chroma) saqlab qoladi
saturation Yuqori qatlamning to‘yinganligini (chroma) oladi va pastki qatlamning yorqinligi (luma) hamda rang tonini (hue) saqlab qoladi
color Yuqori qatlamning rang toni (hue) va to‘yinganligini (chroma) oladi hamda pastki qatlamning yorqinligini (luma) saqlab qoladi
luminosity Yuqori qatlamning yorqinligini (luma) oladi va pastki qatlamning rang toni (hue) hamda to‘yinganligini (chroma) saqlab qoladi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!