---
title: "การจัดการเมตาไฟล์WindowsในJava"
---


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

เดิมWindowsเมตาไฟล์เป็นรูปแบบภาพเวกเตอร์เดียวที่รองรับโดยMicrosoft Word Microsoft Wordตอนนี้ยังสนับสนุนSVGรูปแบบ,แต่รูปแบบเมไฟล์ยังคงเป็นที่นิยมใช้ในเอกสารคำ. การแลกเปลี่ยนสำหรับโปรแกรมอื่นๆบางอย่างเช่นMicrosoftวิสัยทัศน์ การแลกเปลี่ยนข้อมูลแบบกราฟิกระหว่างการใช้งานWindows.

มี 3 รุ่นของWindowsเมตาไฟล์:

- WMF-ร้านค้าโทรไป 16 บิตGDI.
- EMF-ร้านค้าโทรไปที่วิน32/GDI.
- EMF+ร้านค้าเมตาไฟล์โทรไปที่GDI+. EMF+เมตาไฟล์อาจเป็นแบบคู่,อธิบายกราฟิกเดียวกันกับทั้งEMFและEMF+ชิ้นส่วน.

ปัญหาที่มีอยู่กับWindowsเมตาไฟล์คือว่ามันไม่ได้รับการสนับสนุนโดยรูปแบบที่ไม่ใช่คำส่วนใหญ่ซึ่งเ นั้นจึงจำเป็นต้องแปลงรูปแบบเมไฟล์ในรูปแบบแรสเตอร์หรือเวกเตอร์อื่นๆ มันเป็นเรื่องง่ายที่จะแปลงWindowsเมตาไฟล์เป็นภาพแรสเตอร์บน.NETโดยเพียงแค่ผ่านมันไปGDI+แต่มันเป็นไปไม่ได้บนแพลตฟอร์มอื่นๆตั้งแต่แม้แต่GDI+ไม่ได้ให้ฟังก์ชั่นเพื่อดึงกราฟิกแบบเวกเตอร์จากเมตาไฟล์ เพื่อแก้ปัญหาเหล่านี้Aspose.Wordsใช้โปรแกรมเล่นเมตาไฟล์ของตัวเองWindowsซึ่งสามารถเล่นรูปแบบเมตาไฟล์ทั้งแบบเวกเตอร์และกราฟิกแรสเตอร์บนแพลตฟอร์มทั้งหมด.

## การควบคุมโปรแกรมเล่นเมตาไฟล์Aspose.Words

[MetafileRenderingOptions](https://reference.aspose.com/words/java/com.aspose.words/metafilerenderingoptions/)ชั้นช่วยให้คุณสามารถควบคุมเครื่องเล่นเมตาไฟล์. ใช้คุณสมบัติ[RenderingMode](https://reference.aspose.com/words/java/com.aspose.words/metafilerenderingmode/)ซึ่งมีความหมายพิเศษเมื่อแปลงเป็นบิตแมป(ดูคุณสมบัติของ[MetafileRenderingOptions](https://reference.aspose.com/words/java/com.aspose.words/imagesaveoptions/#getMetafileRenderingOptions)ด้วย).

## สนับสนุนการดำเนินงานแรสเตอร์

การดำเนินงานแรสเตอร์เป็นคุณลักษณะเมตาแฟ้มที่ซับซ้อนซึ่งขณะนี้มีการสนับสนุนที่จำกัด การดำเนินงานของแรสเตอร์มีอยู่ในรูปแบบเมตาแฟ้มWMFและEMF รูปแบบเมตาไฟล์EMF+ไม่ได้ใช้การดำเนินการแรสเตอร์โดยตรงแต่สามารถประกอบด้วยEMFชิ้นส่วนฝังWMFหรือEMFเมตาไฟล์.

มีการดำเนินการแรสเตอร์ไบนารีและไบนารี:

- การดำเนินการแรสเตอร์ไบนารีจะนำไปใช้กับคำสั่งวาดปากกาเช่นวาดเส้นและเส้นโค้ง เมื่อวาดเส้นสีปากกาจะรวมกับสีบิตแมปปลายทาง(สีของพิกเซลที่สอดคล้องกันบนพื้นผิวของอุ ตัวอย่างภาพด้านล่างแสดงให้เห็นถึงผลของการดำเนินงานแรสเตอร์ไบนารีทั้งหมด 16 นำไปใช้กับแถบสีที่แตกต่างกัน 20 แถบ แถบสีแนวตั้งจะวาดก่อนแถบแนวนอนจะวาดหลังจากแต่ละการดำเนินการแรสเตอร์ไบน สำหรับกรณีง่ายๆR2_BLACKวาดสีดำ,R2_NOTจะผกผันสี,R2_NOPจะไม่เปลี่ยนพื้นหลัง,และR2_WHITEวาดสีขาว.

<img src="/words/java/handling-windows-metafiles/handling-windows-metafiles-1.png" alt="handling-windows-metafiles-aspose-words-java-1" style="width:650px"/>

- ใช้เมื่อวาดภาพบิตแมป บิตแมปที่สอดคล้องกันพิกเซล,แปรง,และบิตแมปปลายทางโดยใช้การดำเนินงานแบบตรรกะบิ หนึ่งในวัตถุประสงค์ที่พบบ่อยที่สุดของการใช้การดำเนินการแรสเตอร์สามัญคือการจำลอง ภาพที่แสดงในตัวอย่างด้านล่างแสดงให้เห็นถึงวิธีที่ไอคอนโปร่งใสสามารถเทิดทูน มีสองประเภทของบิตแม็พ:บิตแม็พหน้ากากบี/ดับเบิลยูและบิตแม็พสี ขั้นแรกบิตแมปหน้ากากถูกวาดด้วยการดำเนินการแรสเตอร์SRCAND ไอคอนแพ็ครอบด้วยอายแชโดว์สีเข้มยาวที่แข็งแกร่งที่หลบภัยเป็นสิ่งที่แตกต่าง จากนั้นบิตแมปที่สองจะถูกวาดด้วยการดำเนินการแรสเตอร์SRCINVERT แสดงพิกเซลสีบนขอบเขตสีดำทำให้พื้นที่โปร่งใสไม่เปลี่ยนแปลง.

<img src="/words/java/handling-windows-metafiles/handling-windows-metafiles-2.png" alt="handling-windows-metafiles-aspose-words-java-2" style="width:650px"/>

การดำเนินการแรสเตอร์ไม่สามารถแปลงเป็นกราฟิกแบบเวกเตอร์โดยตรง Aspose.Wordsเลียนแบบการดำเนินงานของแรสเตอร์โดยการแรสเตอร์บางส่วนพื้นผิวอุปกรณ์ที่ได้รับผล เพื่อจุดประสงค์นี้ใช้คุณสมบัติ[EmulateRasterOperations](https://reference.aspose.com/words/java/com.aspose.words/metafilerenderingoptions/#getEmulateRasterOperations).

{{% alert color="primary" %}}

ในขณะที่การดำเนินงานของแรสเตอร์ไบนารีไม่ได้รับการสนับสนุนในปัจจุบันและจำนวนที่จำกัดของการดำเนินงานแรสเตอร์สามัญได้รับการสนับสนุนโดยAspose.Words,มันสามารถจัดการกับกรณีพื้นฐานของการแปลงเป็นกราฟิกแบบเวกเตอร์โดยตรง,ตัวอย่างเช่น, R2_BLACK, R2_WHITE, R2_NOP. งยิ่งเมื่อจำนวนอย่างมีนัยสำคัญของการบันทึกการดำเนินงานแรสเตอร์ที่มีส่วนเกี่ยวข้อง.

{{% /alert %}}

ตัวอย่างที่แสดงด้านล่างแสดงให้เห็นว่าAspose.Wordsแสดงเมตาไฟล์เป็นบิตแมปเมื่อไม่สามารถแสดงผล:

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-rendering_printing-HandleDocumentWarnings-HandleDocumentWarnings.java" >}}

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e" "Examples-src-main-java-com-aspose-words-examples-rendering_printing-RenderMetafileToBitmap-RenderMetafileToBitmap.java" >}}
