SVG: การใช้เส้นเพื่อสร้างรูปทรงที่เรียบง่ายและซับซ้อน

เผยแพร่แล้ว: 2022-12-28

เส้นเป็นรูปร่างพื้นฐานใน svg สามารถใช้เพื่อสร้างรูปทรงง่ายๆ เช่น เส้น สามเหลี่ยม หรือรูปทรงที่ซับซ้อนมากขึ้น เส้นสามารถใช้เป็นเส้นทางได้ เส้นทางคือลำดับของเส้นที่เชื่อมต่อกัน

เนื่องจากพวกมันทรงพลังและยืดหยุ่นกว่ารูปทรงมาตรฐาน จึงสามารถใช้สร้างอะไรก็ได้ทุกอย่าง องค์ประกอบเส้นทางประกอบด้วยคำสั่งและพิกัดต่างๆ ที่สามารถใช้เพื่อกำหนดเส้นทาง การกำหนดเส้นทาง (d) ช่วยให้คุณสามารถย้ายไปยังจุดใหม่และวาด เส้น และเส้นโค้งต่างๆ ได้โดยใช้บรรทัดคำสั่ง เส้นทางสามารถสร้างได้โดยใช้หนึ่งในห้าคำสั่งบรรทัด โพสต์นี้จะใช้ SVG แบบอินไลน์สำหรับรหัส ในการเริ่มต้น เส้นทางถูกกำหนดดังนี้: x=50 และ y=50 (M 50 50 50) ในบรรทัดถัดไป เราใช้ตัวอักษร l (l 0 300) เป็นตัวพิมพ์เล็ก

พิกัดสัมพัทธ์ของ 0 300 ถูกดึงจากจุดปัจจุบัน (50 50) ไปยังคำสั่งเหล่านี้ ตามที่แสดงในตัวอย่างต่อไปนี้ เราแทนที่คำสั่ง lineto สามคำสั่งตรงกลางด้วยคำสั่งแนวนอนและแนวตั้ง เนื่องจากไม่มีการระบุพิกัด จึงไม่จำเป็นต้องระบุพิกัดชุดสุดท้าย ตัวเลือกที่สองคือการใช้เครื่องหมายจุลภาคเพื่อแยกพิกัด x และ y หลังจากแต่ละคำสั่ง สามารถใช้ช่องว่างเพื่อทำให้แต่ละคำสั่งและข้อมูลพาธมองเห็นได้มากขึ้น คำสั่งเส้นทางมีความหลากหลายมากกว่ารูปทรงธรรมดาที่พบในบทก่อนหน้า จากตัวอย่างแรก สามารถสร้างพาธได้โดยใช้คำสั่ง lineto ทุกคำสั่งเส้นทางสามารถมีบรรทัดการดำเนินการของตัวเอง และคุณสามารถใช้ช่องว่างได้มากขึ้น ทำได้ง่ายเพียงคำสั่งเดียวเพื่อสร้างสองบรรทัดที่ดูเหมือนขาดการเชื่อมต่อ

เส้นทางถูกกำหนดใน SVG โดยใช้องค์ประกอบ 'เส้นทาง' รูปร่างพื้นฐานแต่ละรูปร่างได้รับการอธิบายในแง่ของเส้นทางที่สมมูลกัน ซึ่งก็คือรูปร่างของมันนั่นเอง เส้นทางเป็นเพียงเส้นทางเอง ตรงข้ามกับเส้นทางขององค์ประกอบ

ต้องเชื่อมต่อจุดสองจุดผ่านองค์ประกอบ เช่น เส้น > องค์ประกอบ เพื่อสร้างเส้นใน SVG

เป็นไปได้ไหมที่จะวาดเส้นทางใด ๆ ใน Svg?

เป็นไปได้ไหมที่จะวาดเส้นทางใด ๆ ใน Svg?
รูปภาพโดย: googleusercontent.com

ใช่ เป็นไปได้ที่จะวาดเส้นทางใดก็ได้ใน SVG SVG ให้อิสระอย่างมากเมื่อพูดถึงเส้นทางการวาด คุณสามารถใช้คำสั่งเส้นทางต่างๆ เพื่อสร้างรูปร่างประเภทใดก็ได้ที่คุณต้องการ

ต่อไปนี้คือรายการคำสั่งพาธ: moveto, lineto, curveto (บาซิเออร์ทั้งลูกบาศก์และกำลังสอง), ส่วนโค้ง และโคลสพาธ เส้นทางผสม (กล่าวคือ เส้นทางที่มีเส้นทางย่อยหลายเส้นทาง) อนุญาตให้แก้ไขวัตถุด้วยรูโดนัท บทนี้อธิบายไวยากรณ์ ลักษณะการทำงาน และอินเทอร์เฟซ DOM สำหรับเส้นทาง SVG คำสั่งข้อมูลพาธตามด้วยชุดคำสั่งตามด้วยอักขระตัวเดียว ข้อมูลพาธมีไวยากรณ์ง่ายๆ ที่อนุญาตให้ดาวน์โหลดไฟล์โดยมีพื้นที่น้อยและใช้ความพยายามน้อยลง เป็นไปได้ที่จะแบ่งข้อมูลเส้นทางออกเป็นหลายบรรทัดเพื่อให้อ่านง่ายขึ้นเนื่องจากมีอักขระขึ้นบรรทัดใหม่ เมื่อใช้มาร์กอัป การขึ้นบรรทัดใหม่ในแอตทริบิวต์ภายในจะถูกทำให้เป็นมาตรฐานเป็นอักขระเว้นวรรค

สตริงข้อมูลเส้นทางระบุรูปร่างที่สามารถใช้เป็นสตริงสำหรับค่า ขั้นตอนด้านล่างจะช่วยคุณในการจัดการกับข้อผิดพลาดภายในสตริงตามส่วนการจัดการข้อผิดพลาดของข้อมูลเส้นทาง หากมี ส่วนข้อมูลพาธต้องนำหน้าด้วยคำสั่ง moveto เส้นตรงอัตโนมัติ ถูกลากจากจุดที่เส้นทางย่อยปัจจุบันเริ่มต้นจนถึงจุดที่เส้นทางย่อยสิ้นสุดลง ในกรณีนี้ ส่วนเส้นทางที่มีความยาวเป็นศูนย์จะเหมาะสม เมื่อใช้เมธอด closepath จุดสิ้นสุดของพาธย่อยจะเชื่อมต่อกับจุดเริ่มต้นของเซกเมนต์แรกโดยใช้ค่าของ 'เส้นขีดเส้นร่วม' ที่ใช้อยู่ในปัจจุบัน เส้นทางย่อยแบบเปิดทำงานในลักษณะเดียวกับเส้นทางย่อยแบบปิด แต่ส่วนของเส้นทางไม่ทับซ้อนกัน

ขณะนี้ยังไม่รองรับการดำเนินการปิดพาธสำหรับการเติมเซ็กเมนต์ใน Python จากจุดปัจจุบันไปยังจุดใหม่ คำสั่ง lineto ต่างๆ จะ วาดเส้นตรง หากคุณใช้คำสั่งสัมพัทธ์ l คุณจะได้จุดสิ้นสุดของบรรทัด (cpy x) ในทิศทางของแกน x ที่เป็นบวก คำสั่ง h สัมพัทธ์ของค่า x ที่เป็นบวกจะสร้างเส้นแนวนอน ห้าตัวอย่างแรกแสดงภาพรวมของส่วนเส้นทางลูกบาศก์ Bezier ต่อไปนี้เป็นคำสั่งส่วนโค้งวงรีสี่คำสั่ง เมื่อใช้คำสั่งสัมพัทธ์เพื่อวางแผนส่วนโค้ง cpy x คือจุดสิ้นสุดของส่วนโค้ง (cpx x, cpy y)

ธงส่วนโค้งขนาดใหญ่และธงกวาดแสดงถึงส่วนโค้งทั้งสี่ส่วนที่ถูกวาด การประมวลผล EBNF ต้องใช้การผลิตที่กำหนดมากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้การประมวลผลหยุดลงหลังจากที่ตัวละครไม่เป็นไปตามข้อกำหนดของการผลิตอีกต่อไป หากคุณสมบัติ d มีค่าเป็น none การเรนเดอร์จะถูกปิดใช้งาน เมื่อคำนวณรูปร่างหมวกและเลือกเครื่องหมาย ทิศทางเริ่มต้นที่ขอบเขตของเซ็กเมนต์จะถูกละเว้น ส่วนโค้งที่มีศูนย์ rx หรือ ry ถือเป็น ส่วนของเส้นตรง (lineto) ที่จะรวมจุดสิ้นสุด ขั้นตอนการปรับขนาดนี้สามารถพบได้ในส่วนภาคผนวกของสูตรทางคณิตศาสตร์สำหรับขั้นตอนการปรับขนาดนี้ ส่วนเส้นทางที่ไม่มีความยาวนั้นไม่ถูกต้อง และอาจทำให้เกิดปัญหาในการแสดงผลในกรณีต่อไปนี้

เพื่อให้ตัวแทนผู้ใช้ปรับขนาดการคำนวณระยะทางต่อเส้นทาง สามารถใช้แอตทริบิวต์ 'pathLength' เพื่อคำนวณ ความยาวเส้นทาง ทั้งหมดของผู้แต่ง องค์ประกอบ 'เส้นทาง' ไม่มีความยาวสำหรับการดำเนินการ a'moveto' ความยาวพาธคำนวณโดยการเลือกคำสั่ง “lineto” “curveto” และ “arcto” หลายคำสั่ง


ฉันจะวาดเส้นแนวนอนใน Svg ได้อย่างไร

ฉันจะวาดเส้นแนวนอนใน Svg ได้อย่างไร
ภาพโดย: pdbuchan.com

ในการวาดเส้นแนวนอนใน svg คุณต้องใช้องค์ประกอบ 'เส้น' องค์ประกอบ 'เส้น' ต้องการสองแอตทริบิวต์ 'x1' และ 'x2' ซึ่งระบุพิกัด x ของจุดเริ่มต้นและจุดสิ้นสุดของเส้น แอตทริบิวต์ 'y1' และ 'y2' ไม่จำเป็น แต่ถ้าไม่ได้ระบุไว้ แอตทริบิวต์จะใช้ค่าเริ่มต้นเป็น '0'

ใน CodePen ไม่ว่าคุณจะเขียนอะไรในตัวแก้ไข HTML องค์ประกอบที่ปรากฏในเทมเพลต HTML5 พื้นฐานก็คือองค์ประกอบ HTML5 หากคุณต้องการเพิ่มชั้นเรียนที่มีผลกับทั้งเอกสาร นี่คือที่ที่ควรไป CSS สามารถนำไปใช้กับปากกาของคุณจากสไตล์ชีตใดๆ ก็ตามที่พบบนอินเทอร์เน็ต คุณสามารถเปลี่ยนสคริปต์บนปากกาได้อย่างง่ายดายจากทุกที่บนอินเทอร์เน็ต คุณสามารถระบุ URL ให้กับ URL ได้ และเราจะเพิ่มตามลำดับที่คุณระบุเมื่อคุณวาง JavaScript ลงใน Pen เราจะดำเนินการกับสคริปต์หากมีนามสกุลไฟล์สำหรับตัวประมวลผลล่วงหน้าที่เชื่อมโยง

ฉันสามารถเพิ่มคลาสไปยังเส้นทาง Svg ได้หรือไม่

ฉันสามารถเพิ่มคลาสไปยังเส้นทาง Svg ได้หรือไม่
รูปภาพโดย: googleusercontent.com

การเพิ่มคลาสแอตทริบิวต์ให้กับองค์ประกอบ html จะเหมือนกับการเพิ่มคลาสให้กับองค์ประกอบ HTML เมื่อใช้ css ต้องใส่ โค้ด svg ลงในเอกสารในบรรทัด แต่แท็ก *img จะไม่อ้างอิง

องค์ประกอบ Svg และคลาส

ภาพประกอบต่อไปนี้มีทั้งองค์ประกอบ "rect" และ "circle" ในองค์ประกอบ SVG ที่ เรียกว่า "container" ในองค์ประกอบ "rect" มีแอตทริบิวต์ "ความกว้าง" และ "ความสูง" สองรายการ ในองค์ประกอบ "วงกลม" มีแอตทริบิวต์ "รัศมี" สองรายการ XMLns:xlink xmlns: xlink: http://www.w3.org/1999/xlink/xlink.html width=100% height=100% ความกว้างของวงกลม: 50% ความสูง: 50% รัศมี: 10% เติม: สีแดง