첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.01MB

▶ FontCharSet.cs

namespace TestProject
{
    /// <summary>
    /// 폰트 문자 세트
    /// </summary>
    public enum FontCharSet : byte
    {
        /// <summary>
        /// ANSI_CHARSET
        /// </summary>
        ANSI_CHARSET = 0,

        /// <summary>
        /// DEFAULT_CHARSET
        /// </summary>
        DEFAULT_CHARSET = 1,

        /// <summary>
        /// SYMBOL_CHARSET
        /// </summary>
        SYMBOL_CHARSET = 2,

        /// <summary>
        /// MAC_CHARSET
        /// </summary>
        MAC_CHARSET = 77,

        /// <summary>
        /// SHIFTJIS_CHARSET
        /// </summary>
        SHIFTJIS_CHARSET = 128,

        /// <summary>
        /// HANGEUL_CHARSET
        /// </summary>
        HANGEUL_CHARSET = 129,

        /// <summary>
        /// HANGUL_CHARSET
        /// </summary>
        HANGUL_CHARSET = 129,

        /// <summary>
        /// JOHAB_CHARSET
        /// </summary>
        JOHAB_CHARSET = 130,

        /// <summary>
        /// GB2312_CHARSET
        /// </summary>
        GB2312_CHARSET = 134,

        /// <summary>
        /// CHINESEBIG5_CHARSET
        /// </summary>
        CHINESEBIG5_CHARSET = 136,

        /// <summary>
        /// GREEK_CHARSET
        /// </summary>
        GREEK_CHARSET = 161,

        /// <summary>
        /// TURKISH_CHARSET
        /// </summary>
        TURKISH_CHARSET = 162,

        /// <summary>
        /// VIETNAMESE_CHARSET
        /// </summary>
        VIETNAMESE_CHARSET = 163,

        /// <summary>
        /// HEBREW_CHARSET
        /// </summary>
        HEBREW_CHARSET = 177,

        /// <summary>
        /// ARABIC_CHARSET
        /// </summary>
        ARABIC_CHARSET = 178,

        /// <summary>
        /// BALTIC_CHARSET
        /// </summary>
        BALTIC_CHARSET = 186,

        /// <summary>
        /// RUSSIAN_CHARSET
        /// </summary>
        RUSSIAN_CHARSET = 204,

        /// <summary>
        /// THAI_CHARSET
        /// </summary>
        THAI_CHARSET = 222,

        /// <summary>
        /// EASTEUROPE_CHARSET
        /// </summary>
        EASTEUROPE_CHARSET = 238,

        /// <summary>
        /// OEM_CHARSET
        /// </summary>
        OEM_CHARSET = 255
    }
}

 

728x90

 

▶ FontClipPrecision.cs

namespace TestProject
{
    /// <summary>
    /// 폰트 클리핑 정밀도
    /// </summary>
    public enum FontClipPrecision : byte
    {
        /// <summary>
        /// CLIP_DEFAULT_PRECIS
        /// </summary>
        CLIP_DEFAULT_PRECIS = 0,

        /// <summary>
        /// CLIP_CHARACTER_PRECIS
        /// </summary>
        CLIP_CHARACTER_PRECIS = 1,

        /// <summary>
        /// CLIP_STROKE_PRECIS
        /// </summary>
        CLIP_STROKE_PRECIS = 2,

        /// <summary>
        /// CLIP_MASK
        /// </summary>
        CLIP_MASK = 0xf,

        /// <summary>
        /// CLIP_LH_ANGLES
        /// </summary>
        CLIP_LH_ANGLES = (1 << 4),

        /// <summary>
        /// CLIP_TT_ALWAYS
        /// </summary>
        CLIP_TT_ALWAYS = (2 << 4),

        /// <summary>
        /// CLIP_DFA_DISABLE
        /// </summary>
        CLIP_DFA_DISABLE = (4 << 4),

        /// <summary>
        /// CLIP_EMBEDDED
        /// </summary>
        CLIP_EMBEDDED = (8 << 4)
    }
}

 

반응형

 

▶ FontPitchAndFamily.cs

using System;

namespace TestProject
{
    /// <summary>
    /// 폰트 피치 & 패밀리
    /// </summary>
    [Flags]
    public enum FontPitchAndFamily : byte
    {
        /// <summary>
        /// DEFAULT_PITCH
        /// </summary>
        DEFAULT_PITCH = 0,

        /// <summary>
        /// FIXED_PITCH
        /// </summary>
        FIXED_PITCH = 1,

        /// <summary>
        /// VARIABLE_PITCH
        /// </summary>
        VARIABLE_PITCH = 2,

        /// <summary>
        /// FF_DONTCARE
        /// </summary>
        FF_DONTCARE = (0 << 4),

        /// <summary>
        /// FF_ROMAN
        /// </summary>
        FF_ROMAN = (1 << 4),

        /// <summary>
        /// FF_SWISS
        /// </summary>
        FF_SWISS = (2 << 4),

        /// <summary>
        /// FF_MODERN
        /// </summary>
        FF_MODERN = (3 << 4),

        /// <summary>
        /// FF_SCRIPT
        /// </summary>
        FF_SCRIPT = (4 << 4),

        /// <summary>
        /// FF_DECORATIVE
        /// </summary>
        FF_DECORATIVE = (5 << 4)
    }
}

 

300x250

 

▶ FontPrecision.cs

namespace TestProject
{
    /// <summary>
    /// 폰트 정밀도
    /// </summary>
    public enum FontPrecision : byte
    {
        /// <summary>
        /// OUT_DEFAULT_PRECIS
        /// </summary>
        OUT_DEFAULT_PRECIS = 0,

        /// <summary>
        /// OUT_STRING_PRECIS
        /// </summary>
        OUT_STRING_PRECIS = 1,

        /// <summary>
        /// OUT_CHARACTER_PRECIS
        /// </summary>
        OUT_CHARACTER_PRECIS = 2,

        /// <summary>
        /// OUT_STROKE_PRECIS
        /// </summary>
        OUT_STROKE_PRECIS = 3,

        /// <summary>
        /// OUT_TT_PRECIS
        /// </summary>
        OUT_TT_PRECIS = 4,

        /// <summary>
        /// OUT_DEVICE_PRECIS
        /// </summary>
        OUT_DEVICE_PRECIS = 5,

        /// <summary>
        /// OUT_RASTER_PRECIS
        /// </summary>
        OUT_RASTER_PRECIS = 6,

        /// <summary>
        /// OUT_TT_ONLY_PRECIS
        /// </summary>
        OUT_TT_ONLY_PRECIS = 7,

        /// <summary>
        /// OUT_OUTLINE_PRECIS
        /// </summary>
        OUT_OUTLINE_PRECIS = 8,

        /// <summary>
        /// OUT_SCREEN_OUTLINE_PRECIS
        /// </summary>
        OUT_SCREEN_OUTLINE_PRECIS = 9,

        /// <summary>
        /// OUT_PS_ONLY_PRECIS
        /// </summary>
        OUT_PS_ONLY_PRECIS = 10
    }
}

 

▶ FontQuality.cs

namespace TestProject
{
    /// <summary>
    /// 폰트 품질
    /// </summary>
    public enum FontQuality : byte
    {
        /// <summary>
        /// DEFAULT_QUALITY
        /// </summary>
        DEFAULT_QUALITY = 0,

        /// <summary>
        /// DRAFT_QUALITY
        /// </summary>
        DRAFT_QUALITY = 1,

        /// <summary>
        /// PROOF_QUALITY
        /// </summary>
        PROOF_QUALITY = 2,

        /// <summary>
        /// NONANTIALIASED_QUALITY
        /// </summary>
        NONANTIALIASED_QUALITY = 3,

        /// <summary>
        /// ANTIALIASED_QUALITY
        /// </summary>
        ANTIALIASED_QUALITY = 4,

        /// <summary>
        /// CLEARTYPE_QUALITY
        /// </summary>
        CLEARTYPE_QUALITY = 5,

        /// <summary>
        /// CLEARTYPE_NATURAL_QUALITY
        /// </summary>
        CLEARTYPE_NATURAL_QUALITY = 6
    }
}

 

▶ FontWeight.cs

namespace TestProject
{
    /// <summary>
    /// 폰트 가중치
    /// </summary>
    public enum FontWeight : int
    {
        /// <summary>
        /// DONT_CARE
        /// </summary>
        DONT_CARE = 0,

        /// <summary>
        /// THIN
        /// </summary>
        THIN = 100,

        /// <summary>
        /// EXTRA_LIGHT
        /// </summary>
        EXTRA_LIGHT = 200,

        /// <summary>
        /// LIGHT
        /// </summary>
        LIGHT = 300,

        /// <summary>
        /// NORMAL
        /// </summary>
        NORMAL = 400,

        /// <summary>
        /// MEDIUM
        /// </summary>
        MEDIUM = 500,

        /// <summary>
        /// SEMI_BOLD
        /// </summary>
        SEMI_BOLD = 600,

        /// <summary>
        /// BOLD
        /// </summary>
        BOLD = 700,

        /// <summary>
        /// EXTRA_BOLD
        /// </summary>
        EXTRA_BOLD = 800,

        /// <summary>
        /// HEAVY
        /// </summary>
        HEAVY = 900
    }
}

 

▶ ENUMLOGFONTEX.cs

using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// ENUMLOGFONTEX
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
    public struct ENUMLOGFONTEX
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region Field

        /// <summary>
        /// LOG 폰트
        /// </summary>
        public LOGFONT LogFont;

        /// <summary>
        /// 전체 명칭
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string FullName;

        /// <summary>
        /// 스타일
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string Style;

        /// <summary>
        /// 스크립트
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string Script;

        #endregion
    }
}

 

▶ FONTSIGNATURE.cs

using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// FONTSIGNATURE
    /// </summary>
    public struct FONTSIGNATURE
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region Field

        /// <summary>
        /// USB
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray)]
        public int[] USB;

        /// <summary>
        /// CSB
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray)]
        public int[] CSB;

        #endregion
    }
}

 

▶ LOGFONT.cs

using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// LOGFONT
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    public struct LOGFONT
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region Field

        /// <summary>
        /// 높이
        /// </summary>
        public int Height;

        /// <summary>
        /// 너비
        /// </summary>
        public int Width;

        /// <summary>
        /// 이스케이프먼트
        /// </summary>
        public int Escapement;

        /// <summary>
        /// 방향
        /// </summary>
        public int Orientation;

        /// <summary>
        /// 가중치
        /// </summary>
        public FontWeight Weight;

        /// <summary>
        /// 이탤릭체 여부
        /// </summary>
        [MarshalAs(UnmanagedType.U1)]
        public bool Italic;

        /// <summary>
        /// 밑줄 여부
        /// </summary>
        [MarshalAs(UnmanagedType.U1)]
        public bool Underline;

        /// <summary>
        /// 스트라이크 아웃 여부
        /// </summary>
        [MarshalAs(UnmanagedType.U1)]
        public bool StrikeOut;

        /// <summary>
        /// 문자 세트
        /// </summary>
        public FontCharSet CharSet;

        /// <summary>
        /// 출력 정밀도
        /// </summary>
        public FontPrecision OutPrecision;

        /// <summary>
        /// 클리핑 정밀도
        /// </summary>
        public FontClipPrecision ClipPrecision;

        /// <summary>
        /// 품질
        /// </summary>
        public FontQuality Quality;

        /// <summary>
        /// 피치 & 패밀리
        /// </summary>
        public FontPitchAndFamily PitchAndFamily;

        /// <summary>
        /// 폰트명
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string FaceName;

        #endregion
    }
}

 

▶ NEWTEXTMETRIC.cs

using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// NEWTEXTMETRIC
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    public struct NEWTEXTMETRIC
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        #region Field

        /// <summary>
        /// 높이
        /// </summary>
        public int Height;

        /// <summary>
        /// 상단 높이
        /// </summary>
        public int Ascent;

        /// <summary>
        /// 하단 높이
        /// </summary>
        public int Descent;

        /// <summary>
        /// 내부 간격
        /// </summary>
        public int InternalLeading;

        /// <summary>
        /// 외부 간격
        /// </summary>
        public int ExternalLeading;

        /// <summary>
        /// 평균 문자 너비
        /// </summary>
        public int AverageCharacterWidth;

        /// <summary>
        /// 최대 문자 너비
        /// </summary>
        public int MaximumCharacterWidth;

        /// <summary>
        /// 가중치
        /// </summary>
        public int Weight;

        /// <summary>
        /// 오버행
        /// </summary>
        public int Overhang;

        /// <summary>
        /// 종횡비 X
        /// </summary>
        public int AspectX;

        /// <summary>
        /// 종횡비 Y
        /// </summary>
        public int AspectY;

        /// <summary>
        /// 첫번째 문자
        /// </summary>
        public char FirstCharacter;

        /// <summary>
        /// 마지막 문자
        /// </summary>
        public char LastCharacter;

        /// <summary>
        /// 디폴트 문자
        /// </summary>
        public char DefaultCharacter;

        /// <summary>
        /// BREAK 문자
        /// </summary>
        public char BreakCharacter;

        /// <summary>
        /// 이탤릭체 여부
        /// </summary>
        public byte Italic;

        /// <summary>
        /// 밑줄 여부
        /// </summary>
        public byte Underlined;

        /// <summary>
        /// 스트라이크 아웃 여부
        /// </summary>
        public byte StrikeOut;

        /// <summary>
        /// 피치 & 패밀리
        /// </summary>
        public byte PitchAndFamily;

        /// <summary>
        /// 문자 세트 여부
        /// </summary>
        public byte CharSet;

        /// <summary>
        /// 플래그
        /// </summary>
        public int Flag;

        /// <summary>
        /// EM 크기
        /// </summary>
        public int SizeEM;

        /// <summary>
        /// 셀 높이
        /// </summary>
        public int CellHeight;

        /// <summary>
        /// 평균 너비
        /// </summary>
        public int AverageWidth;

        #endregion
    }
}

 

▶ NEWTEXTMETRICEX.cs

namespace TestProject
{
    /// <summary>
    /// NEWTEXTMETRICEX
    /// </summary>
    public struct NEWTEXTMETRICEX
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region Field

        /// <summary>
        /// 텍스트 메트릭
        /// </summary>
        public NEWTEXTMETRIC TextMetric;

        /// <summary>
        /// 폰트 서명
        /// </summary>
        public FONTSIGNATURE FontSignature;

        #endregion
    }
}

 

▶ FontHelper.cs

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace TestProject
{
    /// <summary>
    /// 폰트 헬퍼
    /// </summary>
    public class FontHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Delegate
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 폰트 열거하기 대리자 - EnumerateFontDelegate(enumLogFontEx, newTextMetricEx, fontType, longParameter)

        /// <summary>
        /// 폰트 열거하기 대리자
        /// </summary>
        /// <param name="enumLogFontEx">ENUMLOGFONTEX</param>
        /// <param name="newTextMetricEx">NEWTEXTMETRICEX</param>
        /// <param name="fontType">폰트 타입</param>
        /// <param name="longParameter">LONG 매개 변수</param>
        /// <returns>처리 결과</returns>
        public delegate int EnumerateFontDelegate
        (
            ref ENUMLOGFONTEX   enumLogFontEx,
            ref NEWTEXTMETRICEX newTextMetricEx,
            int                 fontType,
            int                 longParameter
        );

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Import
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 디바이스 컨텍스트 구하기 - GetDC(windowHandle)

        /// <summary>
        /// 디바이스 컨텍스트 구하기
        /// </summary>
        /// <param name="windowHandle">윈도우 핸들</param>
        /// <returns>디바이스 컨텍스트 핸들</returns>
        [DllImport("user32")]
        private static extern int GetDC(int windowHandle);

        #endregion
        #region 디바이스 컨텍스트 해제하기 - ReleaseDC(windowHandle, deviceContextHandle)

        /// <summary>
        /// 디바이스 컨텍스트 해제하기
        /// </summary>
        /// <param name="windowHandle">윈도우 핸들</param>
        /// <param name="deviceContextHandle">디바이스 컨텍스트 핸들</param>
        /// <returns>처리 결과</returns>
        [DllImport("user32")]
        private static extern int ReleaseDC(int windowHandle, int deviceContextHandle);

        #endregion
        #region 폰트 패밀리 열거하기 (확장) - EnumFontFamiliesEx(deviceContextHandle, logFontHandle, enumerateFontDelegate, longParameter, flag)

        /// <summary>
        /// 폰트 패밀리 열거하기 (확장)
        /// </summary>
        /// <param name="deviceContextHandle">디바이스 컨텍스트 핸들</param>
        /// <param name="logFontHandle">LOG 폰트 핸들</param>
        /// <param name="enumerateFontDelegate">폰트 열거하기 대리자</param>
        /// <param name="longParameter">LONG 매개 변수</param>
        /// <param name="flag">플래그</param>
        /// <returns>처리 결과</returns>
        [DllImport("gdi32", CharSet = CharSet.Auto)]
        private static extern int EnumFontFamiliesEx
        (
            int                   deviceContextHandle,
            [In] IntPtr           logFontHandle,
            EnumerateFontDelegate enumerateFontDelegate,
            IntPtr                longParameter,
            uint                  flag
        );

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 폰트명 리스트
        /// </summary>
        private static List<string> _fontNameList = new List<string>();

        #endregion

        ////////////////////////////////////////////////////////////////////////////////////////// Instance
        //////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// RASTER_FONTTYPE
        /// </summary>
        private const int RASTER_FONTTYPE = 1;

        /// <summary>
        /// DEVICE_FONTTYPE
        /// </summary>
        private const int DEVICE_FONTTYPE = 2;

        /// <summary>
        /// TRUETYPE_FONTTYPE
        /// </summary>
        private const int TRUETYPE_FONTTYPE = 4;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 폰트명 리스트 구하기 - GetFontNameList(windowHandle, charSet)

        /// <summary>
        /// 폰트명 리스트 구하기
        /// </summary>
        /// <param name="windowHandle">윈도우 핸들</param>
        /// <param name="charSet">문자 세트</param>
        /// <returns>폰트명 리스트</returns>
        public static List<string> GetFontNameList(int windowHandle, FontCharSet charSet)
        {
            LOGFONT logFont       = GetLogFont();
            IntPtr  logFontHandle = Marshal.AllocHGlobal(Marshal.SizeOf(logFont));

            Marshal.StructureToPtr(logFont, logFontHandle, true);

            _fontNameList.Clear();

            try
            {
                int deviceContextHandle = GetDC(windowHandle);

                EnumerateFontDelegate enumerateFontDelegate = new EnumerateFontDelegate(enumerateFont);

                int result = EnumFontFamiliesEx
                (
                    deviceContextHandle,
                    logFontHandle,
                    enumerateFontDelegate,
                    (IntPtr)charSet,
                    0
                );

                if(ReleaseDC(windowHandle, deviceContextHandle) == -1)
                {
                    return null;
                }

                if(result == 0)
                {
                    return null;
                }
            }
            catch
            {
                return null;
            }
            finally
            {
                Marshal.DestroyStructure(logFontHandle, typeof(LOGFONT));

            }

            _fontNameList.Sort();

            return _fontNameList;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Private

        #region LOG 폰트 구하기 - GetLogFont()

        /// <summary>
        /// LOG 폰트 구하기
        /// </summary>
        /// <returns>LOG 폰트</returns>
        private static LOGFONT GetLogFont()
        {
            LOGFONT logFont = new LOGFONT();

            logFont.Height         = 0;
            logFont.Width          = 0;
            logFont.Escapement     = 0;
            logFont.Orientation    = 0;
            logFont.Weight         = 0;
            logFont.Italic         = false;
            logFont.Underline      = false;
            logFont.StrikeOut      = false;
            logFont.CharSet        = FontCharSet.DEFAULT_CHARSET;
            logFont.OutPrecision   = 0;
            logFont.ClipPrecision  = 0;
            logFont.Quality        = 0;
            logFont.PitchAndFamily = FontPitchAndFamily.FF_DONTCARE;
            logFont.FaceName       = string.Empty;

            return logFont;
        }

        #endregion
        #region 폰트 열거하기 - enumerateFont(enumLogFontEx, newTextMetricEx, fontType, longParameter)

        /// <summary>
        /// 폰트 열거하기
        /// </summary>
        /// <param name="enumLogFontEx">ENUMLOGFONTEX</param>
        /// <param name="newTextMetricEx">NEWTEXTMETRICEX</param>
        /// <param name="fontType">폰트 타입</param>
        /// <param name="longParameter">LONG 매개 변수</param>
        /// <returns>처리 결과</returns>
        private static int enumerateFont(ref ENUMLOGFONTEX enumLogFontEx, ref NEWTEXTMETRICEX newTextMetricEx, int fontType, int longParameter)
        {
            try
            {
                if(fontType == TRUETYPE_FONTTYPE)
                {
                    if(enumLogFontEx.LogFont.CharSet == (FontCharSet)longParameter)
                    {
                        _fontNameList.Add(enumLogFontEx.FullName);
                    }
                }
            }
            catch(Exception)
            {
                return 0;
            }

            return 1;
        }

        #endregion
    }
}

 

▶ Program.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            List<string> fontNameList = FontHelper.GetFontNameList
            (
                (int)Process.GetCurrentProcess().MainWindowHandle,
                FontCharSet.HANGEUL_CHARSET
            );

            foreach(string fontName in fontNameList)
            {
                Console.WriteLine(fontName);
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요