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

TestProject.zip
다운로드

▶ MainForm.cs

using System.Drawing;

using DevExpress.Utils.Drawing;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : XtraForm
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 이미지 배열
        /// </summary>
        private Image[] imageArray;

        /// <summary>
        /// 현재 이미지 인덱스
        /// </summary>
        private int currentImageIndex = 0;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            this.imageArray = GetImageArray();

            this.imageSlider.LayoutMode  = ImageLayoutMode.MiddleCenter;
            this.imageSlider.VirtualMode = true;

            this.imageSlider.CanGetNextPrevImage += imageSlider_CanGetNextPrevImage;
            this.imageSlider.GetImage            += imageSlider_GetImage;

            this.imageSlider.UpdateImage();
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 이미지 슬라이더 다음/이전 이미지 획득 가능 여부 구하기 - imageSlider_CanGetNextPrevImage(sender, e)

        /// <summary>
        /// 이미지 슬라이더 다음/이전 이미지 획득 가능 여부 구하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void imageSlider_CanGetNextPrevImage(object sender, CanGetNextPrevImageEventArgs e)
        {
            if(e.IsNext)
            {
                e.CanGetImage = (currentImageIndex < imageArray.Length - 1);
            }
            else
            {
                e.CanGetImage = (currentImageIndex > 0);
            }
        }

        #endregion
        #region 이미지 슬라이더 이미지 획득시 처리하기 - imageSlider_GetImage(sender, e)

        /// <summary>
        /// 이미지 슬라이더 이미지 획득시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void imageSlider_GetImage(object sender, GetImageEventArgs e)
        {
            if(e.IsStartUp)
            {
                e.Image = imageArray[0];

                return;
            }

            if(e.IsNext)
            {
                e.Image = imageArray[currentImageIndex + 1];

                if(e.CurrentImageUpdated)
                {
                    ++currentImageIndex;
                }
            }
            else if(e.IsPrev)
            {
                e.Image = imageArray[currentImageIndex - 1];

                if(e.CurrentImageUpdated)
                {
                    --currentImageIndex;
                }
            }
        }

        #endregion

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

        #region 이미지 구하기 - GetImage(color)

        /// <summary>
        /// 이미지 구하기
        /// </summary>
        /// <param name="color">색상</param>
        /// <returns>이미지</returns>
        private Image GetImage(Color color)
        {
            Bitmap bitmap = new Bitmap(300, 300);

            for(int i = 0; i < bitmap.Width; i++)
            {
                for(int j = 0; j < bitmap.Height; j++)
                {
                    bitmap.SetPixel(i, j, color);
                }
            }

            return bitmap;
        }

        #endregion
        #region 이미지 배열 구하기 - GetImageArray()

        /// <summary>
        /// 이미지 배열 구하기
        /// </summary>
        /// <returns>이미지 배열</returns>
        private Image[] GetImageArray()
        {
            return new Image[]
            {
                GetImage(Color.Red  ),
                GetImage(Color.Green),
                GetImage(Color.Blue )
            };
        }

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

댓글을 달아 주세요