■ FontDialog 클래스를 사용해 폰트 설정하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainWindow.xaml.cs

 

 

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media;

 

namespace TestProject

{

    /// <summary>

    /// 메인 윈도우

    /// </summary>

    public partial class MainWindow : Window

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainWindow()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainWindow()

        {

            InitializeComponent();

 

            this.fontButton.Click += fontButton_Click;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

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

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 폰트 버튼 클릭시 처리하기 - fontButton_Click(sender, e)

 

        /// <summary>

        /// 폰트 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void fontButton_Click(object sender, RoutedEventArgs e)

        {

            System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog();

 

            fontDialog.ShowColor = true;

 

            if(fontDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)

            {

                ApplyFont(this.textBlock, fontDialog.Font, fontDialog.Color);

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////// Function

 

        #region 폰트 적용하기 - ApplyFont(textBlock, font, fontColor)

 

        /// <summary>

        /// 폰트 적용하기

        /// </summary>

        /// <param name="textBlock">텍스트 블럭</param>

        /// <param name="font">폰트</param>

        /// <param name="fontColor">폰트 색상</param>

        private void ApplyFont(TextBlock textBlock, System.Drawing.Font font, System.Drawing.Color fontColor)

        {

            textBlock.Foreground = new SolidColorBrush(Color.FromArgb(255, fontColor.R, fontColor.G, fontColor.B));

 

            textBlock.FontFamily = new FontFamily(font.Name);

 

            textBlock.FontSize = font.Size;

 

            if(font.Strikeout)

            {

                textBlock.TextDecorations.Add

                (

                    new TextDecoration

                    (

                        TextDecorationLocation.Strikethrough,

                        null,

                        0,

                        TextDecorationUnit.FontRecommended,

                        TextDecorationUnit.FontRecommended

                    )

                );

            }

 

            if(font.Underline)

            {

                textBlock.TextDecorations.Add

                (

                    new TextDecoration

                    (

                        TextDecorationLocation.Underline,

                        null,

                        0,

                        TextDecorationUnit.FontRecommended,

                        TextDecorationUnit.FontRecommended

                    )

                );

            }

 

            if(font.Italic)

            {

                textBlock.FontStyle = FontStyles.Italic;

            }

            else

            {

                textBlock.FontStyle = FontStyles.Normal;

            }

 

            if(font.Bold)

            {

                textBlock.FontWeight = FontWeights.Bold;

            }

            else

            {

                textBlock.FontWeight = FontWeights.Normal;

            }

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG