กลับไปหน้าบทความ

อ่าน 2 นาที

จาวา 2 มิติ

Java 2D เป็น API สำหรับวาด ภาพกราฟิก สองมิติ โดยใช้ ภาษาการ เขียน โปรแกรม Java [ 1 ] การดำเนินการวาดภาพ Java 2D ทุกอย่างสามารถถือได้ว่าเป็นการ เติมรูปร่าง โดย ใช้สี และ รวม...

จาวา 2 มิติ

Java 2Dเป็นAPIสำหรับวาดภาพกราฟิกสองมิติ โดยใช้ ภาษาการ เขียนโปรแกรม Java [ 1 ] การดำเนินการวาดภาพ Java 2D ทุกอย่างสามารถถือได้ว่าเป็นการเติมรูปร่างโดยใช้สีและรวมผลลัพธ์ลงบนหน้าจอ Java 2D เป็นชุดคลาสสำหรับกราฟิกและการสร้างภาพสองมิติขั้นสูง ประกอบด้วยภาพลายเส้น ข้อความ และรูปภาพในโมเดลที่ครอบคลุมเพียงโมเดลเดียว API นี้ให้การสนับสนุนอย่างกว้างขวางสำหรับการรวมภาพและภาพที่มีช่องอัลฟา ชุดคลาสสำหรับการกำหนดและการแปลงพื้นที่สีที่แม่นยำ และชุดตัวดำเนินการสร้างภาพที่เน้นการแสดงผลที่หลากหลาย

องค์กร

Java 2D API และเอกสารประกอบสามารถดาวน์โหลดได้เป็นส่วนหนึ่งของ JDK 6 โดยคลาสของ Java 2D API จะถูกจัดระเบียบเป็นแพ็กเกจต่างๆ ดังต่อไปนี้ใน JDK 6:

  • java.awtแพ็กเกจหลักสำหรับ Java Abstract Window Toolkit
  • java.awt.geomไลบรารีมาตรฐานของ Java สำหรับรูปทรงเรขาคณิตสองมิติ เช่น เส้นตรง วงรี และสี่เหลี่ยม
  • java.awt.fontไลบรารีสำหรับจัดการสัญลักษณ์อักขระในภาษา Java
  • java.awt.colorห้องสมุดที่รวบรวมข้อมูลเกี่ยวกับวิธีการต่างๆ ที่สามารถใช้ในการแสดงสีได้
  • java.awt.imageไลบรารีสำหรับจัดการภาพกราฟิก
  • java.awt.printคลังเครื่องมือสำหรับการเขียนลงบนกระดาษ

แนวคิดพื้นฐาน

วัตถุเหล่านี้เป็นส่วนประกอบที่จำเป็นในทุกการดำเนินการวาดภาพ 2 มิติด้วยภาษา Java

รูปทรง

ใน Java 2D รูปร่าง คือ ขอบเขตที่กำหนดด้านในและด้านนอก พิกเซลภายในรูปร่างจะได้รับผลกระทบจากการวาด ส่วนพิกเซลภายนอกจะไม่ได้รับผลกระทบ

การพยายามเติมสีลงในส่วนของเส้น ตรง จะไม่ส่งผลกระทบต่อพิกเซลใดๆ เนื่องจากรูปทรงดังกล่าวไม่มีพิกเซลอยู่ภายใน แต่ต้องใช้ รูปสี่เหลี่ยมผืนผ้า บางๆ แทน เพื่อให้รูปทรงนั้นมีพิกเซลอยู่บ้าง

สีทา

ฟังก์ชันการระบายสีจะสร้างสีที่จะใช้สำหรับแต่ละพิกเซลในการดำเนินการเติมสี ฟังก์ชันการระบายสีที่ง่ายที่สุดคือjava.awt.Colorสีเดียว ซึ่งจะสร้างสีเดียวกันสำหรับทุกพิกเซล ฟังก์ชันการระบายสีที่ซับซ้อนกว่าอาจสร้างการไล่ระดับสี รูปภาพหรือแม้แต่การผสมผสานของสีต่างๆ การเติมรูปทรงวงกลมโดยใช้สีเหลืองจะทำให้ได้วงกลมสีเหลืองทึบ ในขณะที่การเติมรูปทรงวงกลมเดียวกันโดยใช้ฟังก์ชันการระบายสีที่สร้างรูปภาพจะทำให้ได้รูปทรงวงกลมที่ตัดออกมาจากรูปภาพนั้น

วัสดุคอมโพสิต

ในระหว่างการวาดภาพใดๆ จะมีแหล่งที่มา (พิกเซลที่ถูกสร้างขึ้นโดยการวาด) และปลายทาง (พิกเซลที่ปรากฏอยู่บนหน้าจอแล้ว) โดยปกติแล้ว พิกเซลจากแหล่งที่มาจะเขียนทับพิกเซลปลายทาง แต่เทคนิคคอมโพสิตช่วยให้สามารถเปลี่ยนแปลงพฤติกรรมนี้ได้

การรวมภาพโดยใช้พิกเซลต้นทางและปลายทาง จะสร้างผลลัพธ์สุดท้ายที่จะปรากฏบนหน้าจอ การรวมภาพที่พบได้บ่อยที่สุดคือjava.awt.AlphaCompositeซึ่งสามารถกำหนดให้พิกเซลที่กำลังวาดมีความโปร่งใสบางส่วน เพื่อให้พิกเซลปลายทางแสดงออกมาได้ในระดับหนึ่ง

การเติม

ในการเติมสีลงในรูปทรง ขั้นตอนแรกคือการระบุว่าพิกเซลใดบ้างที่อยู่ภายในรูปทรง พิกเซลเหล่านี้จะได้รับผลกระทบจากการดำเนินการเติมสี พิกเซลที่อยู่ภายในและภายนอกรูปทรงบางส่วนอาจได้รับผลกระทบน้อยลงหากเปิดใช้งาน การลดรอยหยัก (anti-aliasing )

จากนั้นโปรแกรมจะสั่งให้สร้างสีสำหรับแต่ละพิกเซลที่จะระบาย ในกรณีทั่วไปของการเติมสีทึบ แต่ละพิกเซลจะถูกกำหนดให้มีสีเดียวกัน

กระบวนการคอมโพสิตจะนำพิกเซลที่สร้างขึ้นโดยสีมาผสมผสานกับพิกเซลที่มีอยู่แล้วบนหน้าจอเพื่อสร้างผลลัพธ์สุดท้าย

วัตถุขั้นสูง

วัตถุเหล่านี้สามารถมองได้ว่าทำหน้าที่ของมันในแง่ของวัตถุที่เรียบง่ายกว่าที่ได้อธิบายไว้ข้างต้น

แปลง

การดำเนินการ 2 มิติทุกอย่างใน Java จะต้องอาศัยการแปลง (transform ) เพื่อให้สามารถเลื่อน หมุน บิด และปรับขนาดรูปร่างได้ในขณะที่วาด การแปลงที่ใช้งานอยู่บ่อยที่สุดคือการแปลงเอกลักษณ์ (identity transform ) ซึ่งไม่มีผลใดๆ

การเติมสีโดยใช้การแปลงรูปทรง สามารถมองได้ว่าเป็นการสร้างรูปทรงใหม่ที่แปลงรูปทรงแล้ว จากนั้นจึงเติมสีลงในรูปทรงนั้น

จังหวะ

นอกจาก คำสั่ง เติมสีแล้ว Java 2D ยังมี คำสั่ง วาดสีอีกด้วย คำสั่งเติมสีจะวาดส่วนภายในของรูปทรง ในขณะที่คำสั่งวาดสีจะวาดเส้นขอบของรูปทรง เส้นขอบอาจเป็นเพียงเส้นบางๆ หรืออาจซับซ้อนกว่านั้น เช่น เส้นประที่มีขอบโค้งมนในแต่ละเส้น

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

ดังนั้น การวาดจึงสามารถอธิบายได้ว่าเป็นการสร้างวัตถุใหม่ที่มีเส้นขอบ แล้วจึงเติมสีลงในวัตถุนั้น

ในทางเทคนิคแล้ว ฟังก์ชันการวาดเส้น (stroke) มีหน้าที่เพียงแค่รับรูปทรงที่ป้อนเข้ามาและสร้างรูปทรงใหม่ ฟังก์ชันการวาดเส้นที่มาพร้อมกับ Java 2D นั้นใช้กฎการกำหนดขอบเขตตามที่อธิบายไว้ข้างต้น แต่ฟังก์ชันการวาดเส้นที่เขียนขึ้นเองสามารถสร้างรูปทรงใดก็ได้ตามต้องการ

การเพิ่มประสิทธิภาพ

ในเชิงแนวคิด การวาดเส้นตรงสีดำใน Java 2D สามารถคิดได้ว่าเป็นการสร้างส่วนของเส้นตรง แปลงรูปทรงตามการแปลงปัจจุบัน ลากเส้นเพื่อสร้างสี่เหลี่ยมผืนผ้าบางๆ สอบถามรูปทรงนี้เพื่อคำนวณพิกเซลที่ได้รับผลกระทบ สร้างพิกเซลโดยใช้java.awt.Color.BLACKและจากนั้นรวมผลลัพธ์เข้ากับหน้าจอ

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

Java 2D ทำงานให้น้อยที่สุดเท่าที่จำเป็นเพื่อให้ดูเหมือนว่าได้ดำเนินการทุกขั้นตอนสำหรับแต่ละการดำเนินการแล้ว จึงรักษาทั้งความยืดหยุ่นและประสิทธิภาพสูงเอาไว้ได้

ปลายทาง

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

การทำงานร่วมกันระหว่าง Java2D และ OpenGL

ตั้งแต่Java SE 6เป็นต้นมา Java2D และOpenGLสามารถทำงานร่วมกันได้ ทำให้สามารถวาดกราฟิก 3 มิติแบบเคลื่อนไหวแทนไอคอนบนปุ่มได้ (ดูJOGL )

ดูเพิ่มเติม

  • หน้า Landing Page สำหรับ Java 2Dที่Oracle
  • บทเรียน Java 2Dที่Oracle
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Java_2D&oldid=1315377764 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ จาวา 2 มิติ

Java 2D เป็น API สำหรับวาด ภาพกราฟิก สองมิติ โดยใช้ ภาษาการ เขียน โปรแกรม Java [ 1 ] การดำเนินการวาดภาพ Java 2D ทุกอย่างสามารถถือได้ว่าเป็นการ เติมรูปร่าง โดย ใช้สี และ รวม...

องค์กร

Java 2D API และเอกสารประกอบสามารถดาวน์โหลดได้เป็นส่วนหนึ่งของ JDK 6 โดยคลาสของ Java 2D API จะถูกจัดระเบียบเป็นแพ็กเกจต่างๆ ดังต่อไปนี้ใน JDK 6:

แนวคิดพื้นฐาน

วัตถุเหล่านี้เป็นส่วนประกอบที่จำเป็นในทุกการดำเนินการวาดภาพ 2 มิติด้วยภาษา Java

รูปทรง

ใน Java 2D รูปร่าง คือ ขอบเขต ที่กำหนดด้านในและด้านนอก พิกเซล ภายในรูปร่างจะได้รับผลกระทบจากการวาด ส่วนพิกเซลภายนอกจะไม่ได้รับผลกระทบ