จะรับชื่อไฟล์ฟอนต์ได้อย่างไร?

ฉันได้เขียนรหัสนี้:

List<string> fontNames = new List<string>();
foreach (FontFamily font in FontFamily.Families)
{
    fontNames.Add(font.Name);
}

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

ขอบคุณ


person Kourosh    schedule 13.09.2011    source แหล่งที่มา
comment
คุณลองใช้คุณสมบัติ BaseURI หรือไม่ msdn.microsoft.com/en-us/ ห้องสมุด/   -  person Alex Turpin    schedule 14.09.2011
comment
ฉันใช้ .net 2. ไม่รองรับ...   -  person Kourosh    schedule 14.09.2011
comment
@ Xeon06 ดูเหมือนจะเป็นฟังก์ชัน WPF บางอย่าง เนื่องจากเป็นคนอนุรักษ์นิยม ฉันคิดว่าเขาหมายถึง WinForms เท่านั้น   -  person Uwe Keim    schedule 14.09.2011
comment
จากนั้นอัปเกรดเวอร์ชัน .NET ของคุณ   -  person Alex Turpin    schedule 14.09.2011
comment
ฉันกำลังสร้างไลบรารีคลาสเพื่อใช้ในแอปพลิเคชันอื่น   -  person Kourosh    schedule 14.09.2011
comment
@ Xeon06 ฉันมีข้อ จำกัด ไม่สามารถอัปเดต :(   -  person Kourosh    schedule 14.09.2011
comment
ในกรณีนั้น ฉันคิดว่าคุณควรค้นหาไดเร็กทอรีสำหรับฟอนต์และค้นหาชื่อที่เป็นไปได้ด้วยตนเองจะดีกว่า   -  person Alex Turpin    schedule 14.09.2011
comment
@ Xeon06 สำหรับฉันข้อเสนอแนะของคุณดูเหมือนจะค่อนข้างหยิ่ง การอัพเกรดสภาพแวดล้อมทั้งหมดเป็นเลเยอร์การนำเสนออื่นจะใช้เวลานานมาก ขึ้นอยู่กับขนาดของโปรเจ็กต์   -  person Uwe Keim    schedule 14.09.2011
comment
มี คำถามที่คล้ายกันและ คำตอบบางส่วนที่ CP บางทีนี่อาจช่วยได้   -  person Uwe Keim    schedule 14.09.2011
comment
@Uwe ฉันคิดว่าแต่ละคนมีความคิดเห็นของตัวเอง ฉันเกลียดคนที่อัพเกรดได้แต่ทำไม่ได้ คนเหล่านี้สร้างปัญหาให้กับทุกคนในระยะยาว แน่นอนว่า OP ในกรณีนี้ไม่มีทางเลือกจริงๆ แต่ถ้าเป็นโครงการที่ค่อนข้างใหม่ คำแนะนำของฉันก็คงอยู่   -  person Alex Turpin    schedule 14.09.2011
comment
ข้อจำกัดที่ฉันกล่าวถึงคือแอปพลิเคชันบุคคลที่สามที่ฉันจะนำเข้า dll ไม่รองรับ .net 3 ขึ้นไป .net2 เท่านั้น   -  person Kourosh    schedule 14.09.2011


คำตอบ (2)


หากคุณสามารถเข้าถึงรีจิสทรีได้ ดังนั้นคุณจึงสามารถดึงชื่อไฟล์ออกมาจากคีย์: 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' โดยพื้นฐานแล้วไฟล์ฟอนต์ทุกไฟล์จะอยู่ใน C:\Windows\Fonts เว้นแต่จะกล่าวถึงในที่อื่น

person Catalyst    schedule 13.09.2011

มีวิธีแก้ปัญหา C++ ที่ CP สำหรับการรับชื่อไฟล์จากตัวจัดการแบบอักษร HFONT GDI+.

ก่อนอื่นคุณสามารถใช้ Font.ToHfont() method เพื่อรับ หมายเลขอ้างอิงแบบอักษรแล้วใช้รหัสในบทความ CP ที่กล่าวถึง แน่นอนว่าสิ่งนี้จะต้องเขียนโค้ด C++ ใหม่เป็น C# ด้วย PInovo บางตัว

person Uwe Keim    schedule 13.09.2011