Diskuze: Canvas - cesty a mezery mezi nimi
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
odkazy na obrázky nefungují, nahraj je normálně zde přes možnost Zvolit soubory pod textareou na post.
Tak to jsou ty obrázky. Zapomněl jsem, že na tomto fóru nejdou některé BB-kódy.
Podle obrázků to nejsou mezery, ale antialiasing, zkus ho vypnout přes ctx.imageSmoothingEnabled
Tak antialiasing je v tom nevinně.
Jednoduchá ukázka:
<canvas id="c2d" width="640" height="480"></canvas>
<script type="text/javascript">
var can = document.getElementById('c2d');
var ctx = can.getContext('2d');
ctx.beginPath();
ctx.moveTo(150,100);
ctx.lineTo(0,150);
ctx.lineTo(200,200);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.moveTo(150,100);
ctx.lineTo(400,150);
ctx.lineTo(200,200);
ctx.closePath();
ctx.fill();
</script>
Jakmile spoj polygonů není rovně, tak to canvas odpíská. Čím víc je spoj zkosený (blížící se 45° ve čtyřech směrech), tím je to horší.
Ale jasně, že je to antialias. Podívej se na vnější linie těch trojúhelníků, jak jsou jemné. A když posuneš jeden z bodů jemně stranou, efekt už tam není.
<script type="text/javascript">
var can = document.getElementById('c2d');
var ctx = can.getContext('2d');
ctx.beginPath();
ctx.moveTo(150,100);
ctx.lineTo(0,150);
ctx.lineTo(200,200);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.moveTo(140,100);
ctx.lineTo(400,150);
ctx.lineTo(200,200);
ctx.closePath();
ctx.fill();
</script>
Už jsem si to přiblížil. Takže jediná možnost je polygony zvětšovat o pixel na každou stranu od středu. Nic jiného mě nenapadá.
Ještě můžeš zkusit ctx.globalCompositeOperation = 'lighter';
Ale v různých situacích se to může chovat odlišně.
ctx.globalCompositeOperation = 'lighter'; by situaci řešilo. Nicméně pokud překreslím polygon jiným polygonem, tak to deformuje barvy. Ideální by bylo něco mezi "lighter" a "source-over". Zatím jsem to vyřešil tím zvětšením polygonu. Pak budu muset vymyslet nějaké čistší řešení.
Zobrazeno 10 zpráv z 10.