2013-04-17 1 views
0

Я использую обычный полигон kineticjs (в данном случае шестиугольник), и я заполняю его изображением с помощью setFillPatternImage. Это работает. Я создаю динамическую реализацию, поэтому мне нужно масштабировать исходное изображение в зависимости от текущего размера многоугольника. Это включает вычисление setFillPatternOffset и setFillPatternScale, поскольку размеры правильного многоугольника относительно центра. Нет четкой документации, которую я могу найти относительно контрольной точки для заполняющего изображения, а также того, должен ли коэффициент масштабирования использовать радиус в качестве прокси для отношений ширины и высоты или нет. Следующий код приводит к неуместному изображению на многоугольнике. Кто-нибудь знает, какие правила выравнивания для fillPatternImage?kineticjs regular polygon setFillPatternImage alignment issue

imageObj.onload = function() { 
    var whex = hexagon.getRadius() * 2; 
    var xratio = whex/imageObj.width; 
    var yratio = whex/imageObj.height; 

    hexagon.setFillPatternImage(imageObj); 
    hexagon.setFillPatternOffset(-whex/2,-whex/2); 
    hexagon.setFillPatternScale([ xratio, yratio ]); 
}; 

Спасибо!

ответ

1

Похоже, я передумал это. Вместо того, чтобы использовать ширину целевого многоугольника при настройке смещения, kineticjs обрабатывает масштабирование этого смещения для вас. В результате вы просто устанавливаете смещение с помощью:

hexagon.setFillPatternOffset(-imageObj.width/2, -imageObj.height/2); 

 Смежные вопросы

  • Нет связанных вопросов^_^