เมนูการสอนสารบัญในหน้านี้

Customization

สิ่งที่น่าทึ่งอย่างหนึ่งเกี่ยวกับ Fabric คือความสามารถในการปรับแต่งได้ คุณสามารถปรับแต่งพารามิเตอร์ต่างๆ มากมายบนแคนวาสหรือออบเจ็กต์แคนวาส เพื่อทำให้สิ่งต่างๆ ทำงานตามที่คุณต้องการ ลองมาดูบางส่วนของพวกเขา

การล็อควัตถุ

วัตถุทุกชิ้นบนผืนผ้าใบสามารถล็อคได้หลายวิธี "lockMovementX", "lockMovementY", "lockRotation", "lockScalingX", "lockScalingY" เป็นคุณสมบัติที่ล็อคการกระทำของวัตถุที่เกี่ยวข้อง ดังนั้นการตั้งค่า object.lockMovementX ให้เป็นจริงจะป้องกันไม่ให้วัตถุถูกย้ายในแนวนอน คุณยังคงสามารถเคลื่อนย้ายมันในระนาบแนวตั้งได้ ในทำนองเดียวกัน lockRotation ป้องกันการหมุนและ lockScalingX/lockScalingY — มาตราส่วน ทั้งหมดนี้เป็นผลสะสม คุณสามารถรวมเข้าด้วยกันด้วยวิธีใดก็ได้

การเปลี่ยนเส้นขอบมุม

คุณสามารถควบคุมการมองเห็นเส้นขอบและมุมของวัตถุได้ผ่านคุณสมบัติ "hasControls" และ "hasBorders" เพียงตั้งค่าเป็นเท็จและวัตถุจะแสดงผล "เปลือยเปล่า" ทันที

object.hasBorders = false;

object.hasControls = false;

คุณยังสามารถเปลี่ยนรูปลักษณ์ได้โดยปรับแต่งคุณสมบัติการปรับแต่งบางอย่าง "cornerDashArray", "borderDashArray", "borderColor", "transparentCorners" "cornerColor", "cornerStrokeColor", "cornerStyle", "selectionBackgroundColor", "padding" และ "cornerSize " คุณสมบัติ.

object.set({
  borderColor: 'red',
  cornerColor: 'green',
  cornerSize: 6
});

  object.set({
    transparentCorners: false,
    cornerColor: 'blue',
    cornerStrokeColor: 'red',
    borderColor: 'red',
    cornerSize: 12,
    padding: 10,
    cornerStyle: 'circle',
    borderDashArray: [3, 3]
  });
  

กำลังปิดการใช้งานการเลือก

คุณสามารถปิดใช้งานการเลือกวัตถุบนผืนผ้าใบได้โดยการตั้งค่าคุณสมบัติ "การเลือก" ของผืนผ้าใบเป็นเท็จ การทำเช่นนี้จะป้องกันการเลือกทุกสิ่งที่แสดงบนผืนผ้าใบ หากคุณต้องการเพียงทำให้วัตถุบางอย่างไม่สามารถเลือกได้ คุณสามารถเปลี่ยนคุณสมบัติ "เลือกได้" ของวัตถุได้ เพียงตั้งค่าเป็นเท็จและวัตถุจะสูญเสียการโต้ตอบ

การปรับแต่งการเลือก

ตอนนี้ จะเป็นอย่างไรหากคุณไม่ต้องการปิดการใช้งานการเลือก แต่ต้องการเปลี่ยนรูปลักษณ์ของมันแทน ไม่มีปัญหา.

มีคุณสมบัติ 4 อย่างบนผืนผ้าใบที่ควบคุมการนำเสนอ ได้แก่ "selectionColor", "selectionBorderColor", "selectionLineWidth" และ "selectionDashArray" สิ่งเหล่านี้ควรอธิบายได้ในตัว ดังนั้นเรามาดูตัวอย่างกัน:

canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));

canvas.selectionColor = 'rgba(0,255,0,0.3)';
canvas.selectionBorderColor = 'red';
canvas.selectionLineWidth = 5;

คุณสมบัติสุดท้าย - "selectionDashArray" - ไม่ตรงไปตรงมา สิ่งที่ช่วยให้เราทำคือทำให้เส้นการเลือกเป็นเส้นประ วิธีการกำหนดรูปแบบเส้นประคือการระบุช่วงเวลาผ่านอาร์เรย์ ดังนั้น เพื่อสร้างรูปแบบที่มีเส้นประยาวหนึ่งเส้นตามด้วยเส้นประสั้นหนึ่งเส้น เราสามารถใช้ค่าประมาณ [10, 5] เป็น "selectionDashArray" เพื่อลากเส้นยาว 10px จากนั้นข้าม 5px แล้วลากเส้น 10px อีกครั้ง เป็นต้น หากเราใช้อาร์เรย์ [2, 4, 6] รูปแบบจะถูกสร้างขึ้นโดยการวาดเส้น 2px จากนั้นข้าม 4px จากนั้นวาดเส้น 6px จากนั้นข้าม 2px จากนั้นวาดเส้น 4px จากนั้นข้าม 6px เป็นต้น คุณได้รับประเด็น ตามตัวอย่าง รูปแบบ [5, 10] มีลักษณะดังนี้:

จังหวะประ

เช่นเดียวกับ "selectionDashArray" บนผืนผ้าใบ อ็อบเจ็กต์ Fabric ทั้งหมดมีคุณสมบัติ " strokeDashArray" ที่รับผิดชอบรูปแบบเส้นประของเส้นขีดใดๆ ที่เกิดขึ้นบนออบเจ็กต์

var rect = new fabric.Rect({
  fill: '#06538e',
  width: 125,
  height: 125,
  stroke: 'red',
  strokeDashArray: [5, 5]
});
canvas.add(rect);

พื้นที่ที่สามารถคลิกได้

ดังที่คุณทราบ วัตถุ Fabric ทั้งหมดมีกล่องขอบเขตที่ใช้ในการลากวัตถุ หรือหมุนและปรับขนาดวัตถุ เมื่อมีตัวควบคุม/มุม คุณอาจสังเกตเห็นว่าวัตถุสามารถลากได้แม้ว่าจะคลิกบนช่องว่างภายในกรอบขอบของวัตถุซึ่งไม่มีสิ่งใดถูกวาดอยู่ก็ตาม

ลองดูภาพนี้:

ตามค่าเริ่มต้น วัตถุ Fabric ทั้งหมดบนผืนผ้าใบสามารถลากโดยใช้กล่องขอบได้ อย่างไรก็ตาม หากคุณต้องการพฤติกรรมที่แตกต่างออกไป — การคลิก/ลากวัตถุตามเนื้อหาจริงเท่านั้น คุณสามารถใช้คุณสมบัติ "perPixelTargetFind" บนวัตถุได้ เพียงตั้งค่าเป็นจริงเพื่อให้ได้พฤติกรรมที่ต้องการ

จุดหมุน

เนื่องจากเวอร์ชัน 1.0 Fabric ใช้ UI ทางเลือกตามค่าเริ่มต้น วัตถุจึงไม่สามารถปรับขนาดและหมุนพร้อมกันได้อีกต่อไป แต่มีการควบคุมการหมุนแยกต่างหากในแต่ละวัตถุ คุณสมบัติที่สอดคล้องกันสำหรับตัวควบคุมนั้นคือ "hasRotatingPoint" คุณสามารถปรับแต่งออฟเซ็ตโดยสัมพันธ์กับออบเจ็กต์ผ่านคุณสมบัติตัวเลข "rotatingPointOffset"

การแปลงวัตถุ

มีคุณสมบัติที่เกี่ยวข้องกับการเปลี่ยนแปลงอื่น ๆ อีกมากมายที่มีอยู่ใน Fabric ตั้งแต่เวอร์ชัน 1.0 หนึ่งในนั้นคือ "uniScaleTransform" บนอินสแตนซ์แคนวาส โดยค่าเริ่มต้นจะเป็นเท็จ และสามารถใช้เพื่อเปิดใช้งานการปรับขนาดวัตถุที่ไม่สม่ำเสมอ กล่าวอีกนัยหนึ่งคือช่วยให้สามารถเปลี่ยนสัดส่วนของวัตถุได้เมื่อลากตามมุม

จากนั้นมีคุณสมบัติ "centeredScaling" และ "centeredRotation" (ก่อน v1.3.4 จะเป็นคุณสมบัติเดียว - "centerTransform") โดยระบุว่าควรใช้จุดศูนย์กลางของวัตถุเป็นจุดกำเนิดของการเปลี่ยนแปลงหรือไม่ เมื่อทั้งสองค่าถูกตั้งค่าให้เป็นจริง มันจะจำลองพฤติกรรมก่อน 1.0 เมื่อออบเจ็กต์ถูกปรับขนาด/หมุนจากศูนย์กลางเสมอ เนื่องจากต้นกำเนิดของการเปลี่ยนแปลง 1.0 นั้นเป็นแบบไดนามิก ซึ่งช่วยให้สามารถควบคุมได้ละเอียดยิ่งขึ้นเมื่อปรับขนาดออบเจ็กต์

คุณสมบัติใหม่คู่สุดท้ายคือ "originX" และ "originY" ตั้งค่าตามค่าเริ่มต้นเป็น "ซ้าย" และ "บน" ซึ่งอนุญาตให้เปลี่ยนต้นกำเนิดของการเปลี่ยนแปลงของวัตถุโดยทางโปรแกรม เมื่อคุณลากมุมของวัตถุ คุณสมบัติเหล่านี้จะเปลี่ยนแปลงแบบไดนามิกภายใต้ประทุน

แล้วเราจะเปลี่ยนมันด้วยตนเองเมื่อใด? ตัวอย่างเช่น เมื่อทำงานกับวัตถุข้อความ เมื่อคุณเปลี่ยนข้อความแบบไดนามิก และขนาดกล่องข้อความเพิ่มขึ้น "originX" และ "originY" จะกำหนดตำแหน่งที่กล่องจะขยาย ดังนั้นหากคุณต้องการจัดกึ่งกลางวัตถุข้อความ คุณจะต้องตั้งค่า originX เป็น "center" หากต้องการติดไปทางขวา คุณจะต้องตั้งค่า originX เป็น "right" และอื่นๆ ลักษณะการทำงานนี้คล้ายกับ "ตำแหน่ง: สัมบูรณ์" ใน CSS

พื้นหลังแคนวาสและการซ้อนทับ

ดังที่คุณอาจจำได้ตั้งแต่ส่วนที่ 1 คุณสามารถกำหนดสีให้เต็มพื้นหลังแคนวาสได้ เพียงตั้งค่าสีปกติเป็นคุณสมบัติ "สีพื้นหลัง" ของผืนผ้าใบ

canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.backgroundColor = 'rgba(0,0,255,0.3)';
canvas.renderAll();

คุณสามารถไปได้ไกลยิ่งขึ้นและกำหนดรูปภาพเป็นพื้นหลังได้ คุณจะต้องใช้เมธอด setBackgroundImage เพื่อส่ง url และตัวเลือกการโทรกลับให้เสร็จสิ้น

canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.setBackgroundImage('../assets/pug.jpg', canvas.renderAll.bind(canvas));

สิ่งสำคัญที่ควรทราบคือแม้ว่าคุณสมบัติจะเรียกว่า 'พื้นหลังรูปภาพ' แต่ก็สามารถโฮสต์ออบเจ็กต์แฟบริคประเภทใดก็ได้ คุณสามารถตั้งค่า `fabric.Rect` ให้เป็นตัวแทนของอาร์ตบอร์ด หรือคุณสามารถตั้งค่ากลุ่มของวัตถุก็ได้ เช่นเดียวกับ `ภาพซ้อนทับ' ด้านล่างหรือ 'สีพื้นหลัง' ที่สามารถโฮสต์ตัวเติมใดๆ เช่น การไล่ระดับสีหรือรูปแบบ

สุดท้ายนี้ คุณยังสามารถตั้งค่าภาพซ้อนทับได้ ซึ่งในกรณีนี้ภาพจะปรากฏที่ด้านบนของวัตถุใดๆ ก็ตามที่แสดงผลบนผืนผ้าใบเสมอ เพียงใช้ setOverlayImage ส่ง url และตัวเลือกการโทรกลับให้เสร็จสิ้น

canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.setOverlayImage('../assets/jail_cell_bars.png', canvas.renderAll.bind(canvas));

รายการความคิดเห็น
กำลังโหลด..