raphael js ปรับขนาด canvas จากนั้น setViewBox เพื่อแสดงองค์ประกอบทั้งหมด

ฉันมีปัญหากับผ้าใบของฉัน

ผืนผ้าใบของฉันในความกว้างแรก = 1300 สูง = 500

จากนั้นฉันปรับขนาดเป็น width = 800px, height = 500

ฉันลอง setViewBox เพื่อซูม แต่เมาส์ไม่ได้รับการแก้ไขด้วยองค์ประกอบเมื่อฉันลากมัน

@canvas.resize(800, 500)
@canvas.setViewBox(0,0, ??, ??)

วิธีคำนวณมัน???

ขอบคุณสำหรับความช่วยเหลือของคุณ :)


person Peter89    schedule 27.12.2012    source แหล่งที่มา


คำตอบ (1)


คุณสามารถคำนวณมิติที่จำเป็นได้โดยใช้วิธีการดังนี้:

function recalculateViewBox( canvas )
{
    var max_x = 0, max_y = 0;
    canvas.forEach( function( el )
        {
            var box = el.getBBox();
            max_x = Math.max( max_x, box.x2 );
            max_y = Math.max( max_y, box.y2 );
        } );
    if ( max_x && max_y )
        canvas.setViewBox( 0, 0, max_x, max_y );
}

โดยพื้นฐานแล้ว คุณเพียงแค่เดินไปตามเนื้อหาของแคนวาสและสร้างกล่อง meta-bounding จากนั้นปรับ viewBox ให้เข้ากับมัน

หากคุณ ต้องการ เพิ่มความเก๋ไก๋ คุณสามารถทำให้ช่องมองเคลื่อนไหวได้ตลอดเวลาเพื่อให้เปลี่ยนเป็นขนาดใหม่ได้อย่างลื่นไหล ฟังก์ชั่นไม่สำคัญ แต่ เซ็กซี่ปานกลาง...

person Kevin Nielsen    schedule 27.12.2012
comment
อ๊ะ ถ้าฉันองค์ประกอบของฉันไม่อยู่ในตำแหน่งที่ถูกต้องสำหรับผืนผ้าใบของฉันมีความกว้างและความสูงสูงสุด ซูมแก้ไของค์ประกอบทั้งหมดเท่านั้น ฉันต้องซูมและแก้ไขหน้าต่าง :) stackoverflow.com/questions/14064402/ - person Peter89; 28.12.2012