การวาดเส้นใน Svg
เผยแพร่แล้ว: 2022-12-08SVG หรือกราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ เป็นรูปแบบภาพที่ช่วยให้ปรับขนาดได้ไม่จำกัดโดยไม่สูญเสียคุณภาพ สิ่งนี้ทำให้เหมาะอย่างยิ่งสำหรับ ภาพลายเส้น ซึ่งมักจะต้องมีการปรับขนาดสำหรับกรณีการใช้งานที่แตกต่างกัน การวาดเส้นใน SVG นั้นง่ายมาก สิ่งที่คุณต้องมีคือจุดเริ่มต้นและจุดสิ้นสุด สิ่งเหล่านี้สามารถกำหนดในรูปของพิกัด (x,y) หรือเป็นเปอร์เซ็นต์ของความกว้างและความสูงทั้งหมดของภาพ SVG เมื่อคุณมีจุดเริ่มต้นและจุดสิ้นสุดแล้ว คุณเพียงแค่เพิ่มองค์ประกอบลงในโค้ด SVG และระบุแอตทริบิวต์ x1, y1, x2 และ y2 เพื่อให้สอดคล้องกับจุดเริ่มต้นและจุดสิ้นสุดของคุณ แค่นั้นแหละ! ต่อไปนี้คือตัวอย่างพื้นฐานในการวาดเส้นใน SVG: ตัวอย่างนี้จะลากเส้นจากมุมซ้ายบนของภาพ SVG (0,0) ไปยังมุมล่างขวา (100,100)
คุณวาดเส้นตรงใน Svg ได้อย่างไร?
สามารถลากเส้นตรงโดยใช้เส้น * ไม่จำเป็นต้องระบุอะไรอีก แค่สร้าง x- อย่างง่าย สิ่งนี้สอดคล้องกับพิกัด y ของเส้น พิกัดอาจถูกระบุโดยไม่มีหน่วยหากถือว่าเป็นพิกัดของผู้ใช้ หรือหากเป็นส่วนหนึ่งของหน่วย เช่น em, in เป็นต้น
โปรแกรมแก้ไข HTML ใน CodePen ใช้เพื่อเขียนทุกอย่างในแท็กของเนื้อหา HTML รวมถึงทุกอย่างในองค์ประกอบ HTML หากคุณต้องการเพิ่มชั้นเรียนที่จะส่งผลอย่างมากต่อเอกสารทั้งหมด นี่คือที่ที่ควรไป การใช้ CSS จากสไตล์ชีตใดๆ บนอินเทอร์เน็ตเป็นวิธีที่ดีที่สุดในการเพิ่มลงในปากกาของคุณ ไม่มีข้อจำกัดว่าจะใช้ปากกาเขียนสคริปต์ได้ที่ไหน หากต้องการเพิ่ม URL ลงในหน้านี้ ให้ป้อนลำดับที่คุณมี แล้วเราจะแทรก URL ตามลำดับต่อไปนี้ หากนามสกุลไฟล์สำหรับสคริปต์ที่คุณลิงก์ไม่ใช่ตัวประมวลผลล่วงหน้า เราจะพยายามประมวลผลก่อนที่จะนำไปใช้
เส้นทาง Svg: พื้นฐาน
สามารถวาดเส้นทางโดยใช้แอตทริบิวต์ d ซึ่งระบุเส้นทางที่จะวาด คำนิยามพาธคือรายการของคำสั่งพาธที่ประกอบด้วยตัวอักษรคำสั่งและตัวเลขที่แสดงถึงพารามิเตอร์คำสั่ง
ตัวอย่างเช่น คุณสามารถกำหนดเส้นทางที่เชื่อมต่อจุด (5,5) และ (10,10) ดังนี้: *br. ควรอ่านว่า: d:M10.5 L5 br> ด้วยเหตุนี้ เส้นทางนี้จึงเริ่มต้นที่มุมล่างซ้ายของเอกสาร (10,10) และสิ้นสุดที่มุมบนซ้ายของเอกสาร (5,10) ค่า M10.5 แสดงถึงจุดเริ่มต้นของเส้นทาง และค่า L5 แสดงถึงจุดสิ้นสุดของเส้นทาง หากต้องการเติมเส้นทางด้วยสี คุณสามารถใช้แอตทริบิวต์เติมได้ พาธสามารถเติมด้วยสีแดงได้โดยใช้นิยามพาธต่อไปนี้: *br. การเติมควรมีข้อความว่า D: M10.5 L5
แท็กใดของ Svg ที่ใช้ในการวาดเส้น?
เดอะ
แอตทริบิวต์ที่แยก *line > และ *polyline > คือน้ำหนัก ขีดกลาง และปัจจัยอื่นๆ ที่ส่งผลต่อวิธีการวาดเส้น นอกจากนี้ยังสามารถมีสีและจังหวะที่มีอิทธิพลต่อลักษณะของเส้น เป็นภาษาวาดภาพเวกเตอร์ที่สามารถใช้สร้างองค์ประกอบกราฟิกได้หลากหลาย เส้นและรูปหลายเหลี่ยมสามารถสร้างจาก *line* หรือ *polyline* ก็ได้ ลักษณะ น้ำหนัก และเส้นประของเส้น ตลอดจนคุณสมบัติสีและจังหวะสามารถควบคุมแยกกันได้
ประโยชน์ของการใช้ Svg
สามารถใช้เพื่อนำบางส่วนของ เอกสาร SVG กลับมาใช้ใหม่ได้ในขณะที่ยังคงรักษาโครงสร้างโดยรวมไว้ มีประโยชน์อย่างยิ่งเมื่อสร้างกราฟิกหรือภาพเคลื่อนไหวที่ใช้ซ้ำได้
เป็นไปได้ไหมที่จะวาดเส้นทางใด ๆ ใน Svg?
ใช่ เป็นไปได้ที่จะวาดเส้นทางใดก็ได้ใน svg นี่เป็นเพราะ svg ใช้รูปแบบกราฟิกแบบเวกเตอร์ ซึ่งหมายความว่าภาพสามารถปรับขนาดเป็นขนาดใดก็ได้โดยไม่สูญเสียคุณภาพ
เส้นทางสามารถแสดงด้วยคำศัพท์หลายคำ เช่น moveto, lineto, curveto (ทั้งพีชคณิตลูกบาศก์และกำลังสอง) ส่วนโค้ง และเส้นทางปิด สามารถใช้เส้นทางผสม (เช่น เส้นทางที่มีเส้นทางย่อยหลายเส้นทาง) เพื่อให้เอฟเฟกต์ต่างๆ เช่น รูโดนัทปรากฏขึ้นได้ บทนี้ให้ภาพรวมของไวยากรณ์ ลักษณะการทำงาน และอินเทอร์เฟซ DOM ของ เส้นทาง SVG แต่ละคำสั่งในชุดข้อมูลพาธประกอบด้วยอักขระหนึ่งตัว ไฟล์ข้อมูลเส้นทางสามารถมีขนาดไฟล์เล็กและความเร็วในการดาวน์โหลดด้วยไวยากรณ์ของเส้นทาง เนื่องจากข้อมูลพาธบางอย่างสามารถมีอักขระขึ้นบรรทัดใหม่ได้ ข้อมูลพาธจึงแบ่งออกเป็นหลายบรรทัดเพื่อให้อ่านง่ายขึ้น ในขณะที่แยกวิเคราะห์ การขึ้นบรรทัดใหม่ที่อยู่ในแอตทริบิวต์จะถูกทำให้เป็นมาตรฐานเป็นอักขระเว้นวรรค
ค่านี้ใช้เพื่อระบุรูปร่างโดยใช้สตริงข้อมูลพาธ ส่วนการจัดการข้อผิดพลาดข้อมูลเส้นทางของตัวแปล Python ระบุวิธีจัดการข้อผิดพลาดในสตริง หากมีเซ็กเมนต์อยู่ คำสั่งแรกคือ MOVE TO (ถ้ามี) เส้นตรงอัตโนมัติ ตามหลักการของความตรง จะถูกลากจากจุดปัจจุบันไปยังจุดเริ่มต้นของเส้นทางปัจจุบัน ส่วนเส้นทางที่นี่อาจสั้นถึงศูนย์ ค่า closepath แสดงถึงการสิ้นสุดของ subpath และใช้ค่าปัจจุบัน 'stroke-linejoin' เพื่อรวมจุดสิ้นสุดของส่วนสุดท้าย เส้นทางย่อยแบบเปิดจะทำงานในลักษณะเดียวกับเส้นทางย่อยแบบปิด โดยที่ส่วนเส้นทางแรกและเส้นทางสุดท้ายจะไม่ถูกรวมเข้าด้วยกัน
ใน Python การดำเนินการปิดเส้นทางแบบเซ็กเมนต์ไม่ได้รับการสนับสนุนในขณะนี้ เมื่อใช้ คำสั่ง lineto ต่างๆ คุณสามารถเปลี่ยนทิศทางของเส้นตรงจากจุดปัจจุบันไปยังจุดใหม่ได้ เมื่อคุณใช้คำสั่งสัมพัทธ์ l จุดสิ้นสุดของบรรทัดคือ (cpy y) (x) เมื่อคุณมีคำสั่ง h สัมพัทธ์ที่มีค่า x เป็นบวก คุณสามารถวาดเส้นแนวนอนในทิศทางของแกน x ที่เป็นบวกได้ มีห้าตัวอย่างที่ส่วนของเส้นทางเป็นลูกบาศก์เบซิเยร์ ต่อไปนี้เป็นคำสั่งส่วนโค้งวงรี ใน command-to-command จุดสิ้นสุดของส่วนโค้งคือ command-to-command ที่สัมพันธ์กับลำดับที่ใช้คำสั่งนั้น
ธงส่วนโค้งขนาดใหญ่และธงกวาดแสดงว่ามีการวาดส่วนโค้งหนึ่งหรือทั้งสองในสี่ส่วนดังแสดงในรูปด้านล่าง การประมวลผล EBNF ต้องใช้การผลิตที่กำหนดมากที่สุดเท่าที่จะเป็นไปได้ และจะหยุดเมื่อตัวละครไม่เป็นไปตามข้อกำหนดของการผลิตอีกต่อไป เมื่อคุณสมบัติ d มีค่าเป็นศูนย์ การแสดงผลจะถูกปิดใช้งาน ต้องคำนวณตัวพิมพ์ใหญ่และเครื่องหมายในทิศทางตรงกันข้ามจากขอบเขตของส่วนตามที่แสดงในทิศทางเริ่มต้น ถ้า rx หรือ ry เป็น 0 ส่วนโค้งจะถือว่าเป็น ส่วนของเส้นตรง (lineto) การดำเนินการปรับขนาดนี้สามารถพบได้ในส่วนภาคผนวกของสูตรทางคณิตศาสตร์สำหรับการดำเนินการนี้ ไม่มีส่วนของเส้นทางที่ไม่ถูกต้องที่นี่ และการแสดงผลจะได้รับผลกระทบในกรณีต่อไปนี้: การใช้ 'pathLength' ผู้เขียนสามารถคำนวณความยาวทั้งหมดของเส้นทางเพื่อให้ตัวแทนผู้ใช้ปรับขนาดการคำนวณระยะทางตามเส้นทางได้ จะต้องมีความยาวเป็นศูนย์ในการดำเนินการที่จะย้ายองค์ประกอบ 'เส้นทาง' การคำนวณความยาวพาธจะดำเนินการโดยใช้คำสั่งต่อไปนี้เท่านั้น: lineto, curveto และ arcto
เส้นทางใน Svg: พื้นฐาน
คำจำกัดความของพาธใน SVG นั้นแตกต่างจากในภาษาวาดอื่นๆ เล็กน้อย แต่มักจะเหมือนกัน สิ่งสำคัญคือต้องจำไว้ว่าเส้นทางประกอบด้วยชุดของจุดต่างๆ และคุณสมบัติ 'เส้นขีด' และ 'เติม' สามารถใช้ในการลงสีและรูปร่างแต่ละจุดได้ เส้นทางเป็นวิธีที่มีประสิทธิภาพในการสร้างภาพประกอบที่ซับซ้อนและมีรายละเอียด และยังสามารถเพิ่มความน่าสนใจให้กับไฟล์ SVG ของคุณได้อีกด้วย
Svg ลากเส้นระหว่างสองจุด
SVG เป็นวิธีที่ยอดเยี่ยมในการวาดเส้นระหว่างจุดสองจุด สิ่งที่คุณต้องมีคือจุดเริ่มต้นและจุดสิ้นสุด คุณสามารถใช้สีใดก็ได้ที่คุณต้องการและความกว้างใดก็ได้ที่คุณต้องการ
สามองค์ประกอบสามารถใช้เพื่อสร้างเส้นทางตรงหรือโค้ง ในตอนท้ายของหน้า มีแอตทริบิวต์สไตล์บางอย่างที่ใช้ในลักษณะเดียวกัน เส้นแบ่งระหว่างจุดสองจุด (x1, y1) และ (x2, y2) สามารถวาดได้โดยใช้องค์ประกอบเส้นทาง ช่วยให้คุณสามารถวาดชุดของเส้นและ/หรือส่วนโค้ง ซึ่งสามารถเชื่อมหรือแยกส่วนได้ด้วยเส้นหรือส่วนโค้ง สามารถแสดงภาพที่ยากต่อการถ่ายภาพ ต่อไปนี้เป็น คำสั่งการวาดทั่วไปสองสามคำสั่ง ในคำสั่งแรก ให้ M x1,y1 เสมอ เมื่อเลื่อนปากกาไปยังตำแหน่งเริ่มต้น ณ จุดนั้น ในการเลือกส่วนโค้งทั้งสี่ จะใช้ธงส่วนโค้งขนาดใหญ่และธงกวาด ส่วนโค้งวงรีซึ่งเป็นส่วนหนึ่งของวงรีที่มีรัศมี x และ y หมุนรอบจุดศูนย์กลางในทิศทางตามเข็มนาฬิกา เส้นทางไร้สาระมีส่วนโค้งวงรีและส่วนของเส้นในภาพนี้
เส้นทางประเภทต่างๆ
เส้นทางสามารถปิดได้ (โดยที่ทุกจุดบนเส้นทางเชื่อมโยงกัน) เปิด (โดยที่ทุกจุดบนเส้นทางไม่ได้เชื่อมโยงกัน) แบบผสม (โดยที่ทุกจุดบนเส้นทางไม่ได้เชื่อมโยงกัน) หรือทั้งสองอย่าง
Svg วาดเส้นแอนิเมชั่น
การวาดเส้นแบบเคลื่อนไหวใน SVG เป็นวิธีที่ยอดเยี่ยมในการเพิ่มภาพเคลื่อนไหวที่เรียบง่ายแต่มีประสิทธิภาพให้กับหน้าเว็บของคุณ วิธีทั่วไปในการทำให้การวาดเส้นเคลื่อนไหวคือการใช้องค์ประกอบที่ทำให้เคลื่อนไหว องค์ประกอบนี้จะใช้ แอตทริบิวต์ภาพเคลื่อนไหว SVG มาตรฐาน เช่น dur (ระยะเวลา) และเริ่มต้น คุณยังสามารถตั้งค่าเส้นขีดแดชเรย์และเส้นขีดประจังหวะเพื่อสร้างเอฟเฟ็กต์ที่น่าสนใจ
เมื่อคุณแก้ไขเอกสารใน Inkscape คุณจะได้มุมมอง SVG DOM แทนตัวเอกสารเอง ซึ่งมีให้ในรูปแบบการส่งออกใน Adobe Illustrator เท่านั้น แอตทริบิวต์ d คือชุดของตัวชี้ที่ตัวแสดงภาพต้องใช้เพื่อย้ายไปยังจุดที่ต้องการ เริ่มบรรทัด วาดเส้นโค้งเบซิเยร์ไปยังจุดอื่น และอื่นๆ ในการควบคุมออฟเซ็ตของเส้นประ: สร้างเส้นทาง SVG ที่มีเส้นประ Web Animations API จะเป็นประโยชน์ต่อนักพัฒนาในอีกไม่กี่เดือนข้างหน้า ในตัวอย่างแรก ฉันใช้แอตทริบิวต์ SVG เพื่อกำหนดเส้นประ แต่คุณสามารถทำสิ่งเดียวกันได้โดยใช้ CSS อาจเป็นเรื่องยากที่จะนำไปใช้ แต่การใช้ getBoundingClientRect เพื่อทริกเกอร์โครงร่างเป็นวิธีที่ใช้ได้ผล Josh Matz และ El Yosh ขยายความเกี่ยวกับสิ่งนี้ในแอนิเมชั่นลูกบาศก์ขี้ขลาด
สไตล์เส้น Svg
มีสามวิธีในการจัดรูปแบบองค์ประกอบ SVG: 1. การใช้แอตทริบิวต์การนำเสนอ: 2. การใช้ CSS: line { stroke: red; ความกว้างช่วงชัก: 2; } 3. การใช้เส้นแนวนอน SVG Svg เส้นแนวนอนคือเส้นที่มีการวางแนวนอน กล่าวคือ เป็นเส้นที่ลากจากซ้ายไปขวา การสร้างเส้นใน Svg เมื่อสร้างเส้นใน SVG ก่อนอื่นคุณต้องสร้างองค์ประกอบที่เรียกว่าเส้น * ในองค์ประกอบนี้ มีการใช้พิกัด x (พิกัดซ้ายสุด) และพิกัด ay (พิกัดขวาสุด) ในการเริ่มต้น ให้กำหนดพิกัดของจุดเริ่มต้นและจุดสิ้นสุดของเส้น คุณสามารถกำหนดความยาวและคุณสมบัติของเส้นได้ทันทีที่คุณมีพิกัดเหล่านี้