>웹 프론트엔드 >HTML 튜토리얼 >캔버스에 그려진 이미지가 흐릿해지는 문제를 해결하는 방법은 무엇입니까?

캔버스에 그려진 이미지가 흐릿해지는 문제를 해결하는 방법은 무엇입니까?

零下一度
零下一度원래의
2017-07-23 13:23:423145검색

Canvas는 HTML5의 새로운 태그로 그래픽을 그릴 수 있는 캔버스입니다. 기본 크기는 300x150입니다. 그리기 캔버스의 크기를 사용자 정의할 때, 즉 스타일을 사용하여 높이와 너비를 설정할 때 주의할 점이 있습니다. 예를 들어

    ef029a31833e82074e2841e311304802
        c1f09087ca97c8236460a3898c8e270c您的浏览器不支持H5画布属性c2caaf3fc160dd2513ce82f021917f8b
    8019067d09615e43c7904885b5246f0a
        var canvas = document.getElementById("canvas");
        var ctx = canvas.getContext("2d");
        ctx.arc(120, 75, 20, 0, Math.PI * 2, false);
        ctx.fillStyle = "#000";
        ctx.fill();
    2cacc6d41bbb37262a98f745aa00fbf0
16b28748ea4df4d9c2150843fecfba68
는 캔버스 전체를 늘리는 것과 동일하므로 그려진 그래픽이 흐려집니다.


캔버스에 그려진 이미지가 흐릿해지는 문제를 해결하는 방법은 무엇입니까?원의 가장자리가 흐려지고 타원으로 변한거 보이시죠? 이는 캔버스가 여전히 기본 크기인 너비 300px, 높이 150px이지만 스타일을 사용하여 캔버스를 강제로 1000x600으로 늘이기 때문입니다. 너비가 3.33배, 높이가 4배 늘어나 타원이 됩니다. 너비를 1200으로 변경하면 둥글게 됩니다.

그래서 스타일에서는 크기를 설정할 수 없습니다. 높이를 설정하려면 캔버스의 너비 및 높이 속성을 사용해야 합니다. 아래 코드를 보세요.

원을 그리는 매개변수도 변경되었으니 참고하세요

ef029a31833e82074e2841e311304802
    2f793f625f21a6d6ac9a0eacb892e6e3您的浏览器不支持H5画布属性c2caaf3fc160dd2513ce82f021917f8b
    8019067d09615e43c7904885b5246f0a
        var canvas = document.getElementById("canvas");
        var ctx = canvas.getContext("2d");
        ctx.arc(500, 300, 200, 0, Math.PI * 2, false);
        ctx.fillStyle = "#000";
        ctx.fill();

    2cacc6d41bbb37262a98f745aa00fbf0
16b28748ea4df4d9c2150843fecfba68

캔버스에 그려진 이미지가 흐릿해지는 문제를 해결하는 방법은 무엇입니까?

캔버스의 크기를 설정하려면 캔버스와 함께 제공되는 너비 및 높이 속성을 사용하세요. 이는 캔버스의 실제 크기입니다. 온라인으로 해결하는 방법이 있는데 저는 거기까지 가보지는 못했습니다. 더 귀찮을 것 같으니 이제부터는 그냥 고정된 크기로 주는게 낫습니다. 어떤 사람들은 이렇게 사용자 정의하는 방법이 쉽다고 말합니다. div를 넣고 js에서 너비를 가져오거나 화면의 너비와 높이를 가져오고 캔버스의 값을 설정하면 됩니다. 코드는 다음과 같습니다.

<div style="width:1000px; height: 600px; " id="canvas_size"><canvas id="canvas" style="background-color: #eee">您的浏览器不支持H5画布属性</canvas>        <script type="text/javascript">var canvas = document.getElementById("canvas");var canvas_size = document.getElementById("canvas_size");//获取divvar ctx = canvas.getContext("2d");canvas.width = canvas_size.offsetWidth;//设置宽canvas.height = canvas_size.offsetHeight;//设置高ctx.arc(500, 300, 200, 0, Math.PI * 2, false);ctx.fillStyle = "#000";ctx.fill();</script>    </div>

결과는 위 사진과 같으니 직접 해보셔도 됩니다.

요약

캔버스의 너비와 높이는 자체 너비와 높이로 작성해야 실제 캔버스 크기가 됩니다.

<span style="font-size: 16px;">7e83f8f7d03d5b3609a6d135bfd5b3e0브라우저가 H5 캔버스 속성c2caaf3fc160dd2513ce82f021917f8b</span><span style="font-size: 16px;">17a80cc1fd4e4aef2bcbf8646e33797c您的浏览器不支持H5画布属性c2caaf3fc160dd2513ce82f021917f8b</span>을 지원하지 않습니다. js를 사용하여 적응적으로 설정하세요.

위 내용은 캔버스에 그려진 이미지가 흐릿해지는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.