첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ LinearGradientBrush 클래스 사용하기

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


TestProject.zip


MainWindow.cs

 

 

using System;

using System.Windows;

using System.Windows.Media;

 

namespace Petzold.AdjustTheGradient

{

    /// <summary>

    /// 그라디언트 조정하기

    /// </summary>

    public class AdjustTheGradient : Window

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

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

 

        #region Field

 

        /// <summary>

        /// 브러시

        /// </summary>

        private LinearGradientBrush brush;

 

        #endregion

 

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

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

 

        #region 생성자 - AdjustTheGradient()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public AdjustTheGradient()

        {

            Title = "LinearGradientBrush 클래스 사용하기";

 

            Width  = 800;

            Height = 600;

 

            SizeChanged += Window_SizeChanged;

 

            this.brush = new LinearGradientBrush(Colors.Red, Colors.Blue, 0);

 

            this.brush.MappingMode = BrushMappingMode.Absolute;

 

            Background = this.brush;

        }

 

        #endregion

 

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

        ////////////////////////////////////////////////////////////////////////////////////////// Static

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

 

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

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        [STAThread]

        public static void Main()

        {

            Application application = new Application();

 

            application.Run(new AdjustTheGradient());

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

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

 

        #region 윈도우 크기 변경시 처리하기 - Window_SizeChanged(sender, e)

 

        /// <summary>

        /// 윈도우 크기 변경시 처리하기

        /// </summary>

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

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

        private void Window_SizeChanged(object sender, SizeChangedEventArgs e)

        {

            double clientAreaWidth  = ActualWidth  - 2 * SystemParameters.ResizeFrameVerticalBorderWidth;

            double clientAreaHeight = ActualHeight - 2 * SystemParameters.ResizeFrameHorizontalBorderHeight - SystemParameters.CaptionHeight;

 

            Point  clientAreaCenterPoint = new Point(clientAreaWidth / 2, clientAreaHeight / 2);

            Vector diagonalVector        = new Vector(clientAreaWidth, -clientAreaHeight);

            Vector perpendicularVector   = new Vector(diagonalVector.Y, -diagonalVector.X);

 

            perpendicularVector.Normalize();

 

            perpendicularVector *= clientAreaWidth * clientAreaHeight / diagonalVector.Length;

 

            this.brush.StartPoint = clientAreaCenterPoint + perpendicularVector;

            this.brush.EndPoint   = clientAreaCenterPoint - perpendicularVector;

        }

 

        #endregion

    }

}

 

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

Posted by 사용자 icodebroker

댓글을 달아 주세요