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

728x90
반응형

■ Graphics 클래스 : CopyFromScreen 메소드를 사용해 RichTextBox 이미지 캡처하기

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


TestProject.zip


MainForm.cs

 

 

using System;

using System.Drawing;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

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

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

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            Load += Form_Load;

        }

 

        #endregion

 

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

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

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

 

        #region 폼 로드시 처리하기 - Form_Load(sender, e)

 

        /// <summary>

        /// 폼 로드시 처리하기

        /// </summary>

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

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

        private void Form_Load(object sender, EventArgs e)

        {

            this.sourceRichTextBox.Text = "Outside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.";

 

            this.sourceRichTextBox.Select(18, 27);

 

            this.sourceRichTextBox.SelectionColor = Color.Blue;

 

            this.sourceRichTextBox.Select(20, 4);

 

            this.sourceRichTextBox.SelectionFont = new Font(this.sourceRichTextBox.Font, FontStyle.Italic);

 

            this.sourceRichTextBox.Select(63, 21);

 

            this.sourceRichTextBox.SelectionColor = Color.Red;

 

            this.sourceRichTextBox.SelectionFont = new Font(this.sourceRichTextBox.Font, FontStyle.Bold);

 

            this.sourceRichTextBox.Select(0, 0);

        }

 

        #endregion

        #region 캡처 버튼 클릭시 처리하기 - captureButton_Click(sender, e)

 

        /// <summary>

        /// 캡처 버튼 클릭시 처리하기

        /// </summary>

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

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

        private void captureButton_Click(object sender, EventArgs e)

        {

            this.targetPictureBox.Image = GetBitmap(this.sourceRichTextBox);

        }

 

        #endregion

 

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

 

        #region 비트맵 구하기 - GetBitmap(richTextBox)

 

        /// <summary>

        /// 비트맵 구하기

        /// </summary>

        /// <param name="richTextBox">리치 텍스트 박스</param>

        /// <returns>비트맵</returns>

        private Bitmap GetBitmap(RichTextBox richTextBox)

        {

            richTextBox.Update();

 

            int width  = richTextBox.ClientSize.Width;

            int height = richTextBox.ClientSize.Height;

 

            Bitmap bitmap = new Bitmap(width, height);

 

            using(Graphics graphics = Graphics.FromImage(bitmap))

            {

                graphics.CopyFromScreen

                (

                    richTextBox.PointToScreen(new Point(0, 0)),

                    new Point(0, 0),

                    richTextBox.ClientSize

                );

            }

 

            return bitmap;

        }

 

        #endregion

    }

}

 

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

728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요