Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.04.2016, 14:31
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

Графика [canvas]. Картинка заполнялась по часовой стрелке, процентами.
Здравствуйте.

Есть вот такая картинка, она заполняется по вертикали, сделано через HTML/CSS, тоесть там два блока, один с серой картинкой, а другой поверх наложенный с голубой картинкой, и с помощью style="height: 60%;" она увеличивается по вертикали в процентах.



Мне нужно такое сделать чтоб по часовой стрелке заполнялось голубое пространство, начинала с середины и в процентах заполняла эту окружность.

Кто нибудь может помочь, или примеры скинуть где подобное реализовано.
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2016, 21:26
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Вот пример просто заливки цветом.

<canvas width='100' height='100'></canvas>

<script>

    var canvas = document.querySelector('canvas');
    var ctx = canvas.getContext('2d');
    var width = canvas.width;
    var height = canvas.height;

    var Circle = function () {
        this.progress = 0;
        this.time = 2000;
        this.start = Date.now();
        this.addDraw();
    };

    Circle.prototype.clear = function () {
        canvas.width = canvas.width;
    };

    Circle.prototype.addDraw = function () {
        requestAnimationFrame(this.draw.bind(this));
    };

    Circle.prototype.draw = function () {
        this.clear();
        var progress = (Date.now() - this.start) / this.time;
        if (progress > 1) {
            progress = 1;
        }

        ctx.strokeStyle = '#c3cbe5';
        ctx.lineWidth = 1;
        var end = 2 * Math.PI;
        var start = - Math.PI / 2;
        ctx.arc(width / 2, height / 2, 50, start, end * progress + start);
        ctx.lineTo(width / 2, height / 2);
        ctx.stroke();
        ctx.fill();

        if (progress < 1) {
            this.addDraw();
        }
    };

    new Circle();

</script>

Последний раз редактировалось tsigel, 03.04.2016 в 21:28.
Ответить с цитированием
  #3 (permalink)  
Старый 03.04.2016, 21:32
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Не совсем в тему, но может поможет... Помогите с диаграммой на canvas
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2016, 05:58
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

tsigel,
cпасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск