Link Search Menu Expand Document

Change PDF Selection Options and Use CustomPaint - C#

PDF Viewer SDK sample in C# demonstrating ‘Change PDF Selection Options and Use CustomPaint’

Form1.cs
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Bytescout.PDFViewer;

namespace Example
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		protected override void OnLoad(EventArgs e)
		{
			pdfViewerControl1.InputFile = "sample.pdf";

			base.OnLoad(e);
		}

		private void tsbOpen_Click(object sender, EventArgs e)
		{
			using (OpenFileDialog openFileDialog = new OpenFileDialog())
			{
				openFileDialog.Title = @"Open PDF Document";
				openFileDialog.Filter = @"PDF Files (*.pdf)|*.pdf|All Files|*.*";

				if (openFileDialog.ShowDialog() == DialogResult.OK)
				{
					this.Text = openFileDialog.FileName;

					Cursor = Cursors.WaitCursor;

					try
					{
						pdfViewerControl1.InputFile = openFileDialog.FileName;
					}
					catch (Exception exception)
					{
						MessageBox.Show(exception.Message);
					}
					finally
					{
						Cursor = Cursors.Default;
					}
				}
			}
		}

		private void cbMultiSelectMode_CheckedChanged(object sender, EventArgs e)
		{
			pdfViewerControl1.MultiSelectMode = cbMultiSelectMode.Checked;
		}

		private void cbAllowResizeSelection_CheckedChanged(object sender, EventArgs e)
		{
			pdfViewerControl1.AllowResizeSelectionRectangles = cbAllowResizeSelection.Checked;
		}

		private void cbLockSelection_CheckedChanged(object sender, EventArgs e)
		{
			pdfViewerControl1.LockSelection = cbLockSelection.Checked;
		}

		List<String> _labels = new List<string>();

		private void pdfViewerControl1_SelectionChanged(object sender, SelectionChange selectionChange, int selectionIndex)
		{
			if (pdfViewerControl1.Selection.Length > _labels.Count)
			{
				for (int i = _labels.Count; i < pdfViewerControl1.Selection.Length; i++)
				{
					_labels.Add(new Random().Next().ToString());
				}
			}
		}

		private void pdfViewerControl1_CustomPaint(object sender, PaintEventArgs e)
		{
			// Paint labels
			for (int i = 0; i < pdfViewerControl1.Selection.Length; i++)
			{
				RectangleF pdfRect = pdfViewerControl1.SelectionInPoints[i];
				Rectangle pixelRect = pdfViewerControl1.TranslateRectangleFromPointsToPixels(pdfRect);
				
				Size textSize = TextRenderer.MeasureText(_labels[i], Font);
				Rectangle textRectangle = new Rectangle(pixelRect.Left, pixelRect.Top - textSize.Height - 6, textSize.Width + 2, textSize.Height + 2);

				e.Graphics.FillRectangle(Brushes.DarkBlue, textRectangle);
				TextRenderer.DrawText(e.Graphics, _labels[i], Font, textRectangle, Color.White, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
			}
		}
	}
}

Form1.Designer.cs
��using Bytescout.PDFViewer;



namespace Example

{

	partial class Form1

	{

		/// <summary>

		/// Required designer variable.

		/// </summary>

		private System.ComponentModel.IContainer components = null;



		/// <summary>

		/// Clean up any resources being used.

		/// </summary>

		/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

		protected override void Dispose(bool disposing)

		{

			if (disposing && (components != null))

			{

				components.Dispose();

			}

			base.Dispose(disposing);

		}



		#region Windows Form Designer generated code



		/// <summary>

		/// Required method for Designer support - do not modify

		/// the contents of this method with the code editor.

		/// </summary>

		private void InitializeComponent()

		{

			this.pdfViewerControl1 = new Bytescout.PDFViewer.PDFViewerControl();

			this.toolStrip1 = new System.Windows.Forms.ToolStrip();

			this.tsbOpen = new System.Windows.Forms.ToolStripButton();

			this.cbLockSelection = new System.Windows.Forms.CheckBox();

			this.cbAllowResizeSelection = new System.Windows.Forms.CheckBox();

			this.cbMultiSelectMode = new System.Windows.Forms.CheckBox();

			this.toolStrip1.SuspendLayout();

			this.SuspendLayout();

			// 

			// pdfViewerControl1

			// 

			this.pdfViewerControl1.AllowResizeSelectionRectangles = true;

			this.pdfViewerControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 

            | System.Windows.Forms.AnchorStyles.Left) 

            | System.Windows.Forms.AnchorStyles.Right)));

			this.pdfViewerControl1.BackColor = System.Drawing.SystemColors.ButtonShadow;

			this.pdfViewerControl1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;

			this.pdfViewerControl1.Location = new System.Drawing.Point(12, 97);

			this.pdfViewerControl1.MouseMode = Bytescout.PDFViewer.MouseMode.Selection;

			this.pdfViewerControl1.MultiSelectMode = true;

			this.pdfViewerControl1.Name = "pdfViewerControl1";

			this.pdfViewerControl1.RegistrationKey = null;

			this.pdfViewerControl1.RegistrationName = null;

			this.pdfViewerControl1.Size = new System.Drawing.Size(1153, 568);

			this.pdfViewerControl1.TabIndex = 0;

			this.pdfViewerControl1.SelectionChanged += new SelectionChangedEventHandler(this.pdfViewerControl1_SelectionChanged);

			this.pdfViewerControl1.CustomPaint += new System.Windows.Forms.PaintEventHandler(this.pdfViewerControl1_CustomPaint);

			// 

			// toolStrip1

			// 

			this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {

            this.tsbOpen});

			this.toolStrip1.Location = new System.Drawing.Point(0, 0);

			this.toolStrip1.Name = "toolStrip1";

			this.toolStrip1.Size = new System.Drawing.Size(1177, 25);

			this.toolStrip1.TabIndex = 1;

			this.toolStrip1.Text = "toolStrip1";

			// 

			// tsbOpen

			// 

			this.tsbOpen.Image = global::Example.Properties.Resources.folder_page;

			this.tsbOpen.ImageTransparentColor = System.Drawing.Color.Magenta;

			this.tsbOpen.Name = "tsbOpen";

			this.tsbOpen.Size = new System.Drawing.Size(80, 22);

			this.tsbOpen.Text = "&Open PDF";

			this.tsbOpen.Click += new System.EventHandler(this.tsbOpen_Click);

			// 

			// cbLockSelection

			// 

			this.cbLockSelection.AutoSize = true;

			this.cbLockSelection.Location = new System.Drawing.Point(12, 74);

			this.cbLockSelection.Name = "cbLockSelection";

			this.cbLockSelection.Size = new System.Drawing.Size(95, 17);

			this.cbLockSelection.TabIndex = 2;

			this.cbLockSelection.Text = "Lock selection";

			this.cbLockSelection.UseVisualStyleBackColor = true;

			this.cbLockSelection.CheckedChanged += new System.EventHandler(this.cbLockSelection_CheckedChanged);

			// 

			// cbAllowResizeSelection

			// 

			this.cbAllowResizeSelection.AutoSize = true;

			this.cbAllowResizeSelection.Checked = true;

			this.cbAllowResizeSelection.CheckState = System.Windows.Forms.CheckState.Checked;

			this.cbAllowResizeSelection.Location = new System.Drawing.Point(12, 51);

			this.cbAllowResizeSelection.Name = "cbAllowResizeSelection";

			this.cbAllowResizeSelection.Size = new System.Drawing.Size(178, 17);

			this.cbAllowResizeSelection.TabIndex = 3;

			this.cbAllowResizeSelection.Text = "Allow resize selection rectangles";

			this.cbAllowResizeSelection.UseVisualStyleBackColor = true;

			this.cbAllowResizeSelection.CheckedChanged += new System.EventHandler(this.cbAllowResizeSelection_CheckedChanged);

			// 

			// cbMultiSelectMode

			// 

			this.cbMultiSelectMode.AutoSize = true;

			this.cbMultiSelectMode.Checked = true;

			this.cbMultiSelectMode.CheckState = System.Windows.Forms.CheckState.Checked;

			this.cbMultiSelectMode.Location = new System.Drawing.Point(12, 28);

			this.cbMultiSelectMode.Name = "cbMultiSelectMode";

			this.cbMultiSelectMode.Size = new System.Drawing.Size(108, 17);

			this.cbMultiSelectMode.TabIndex = 4;

			this.cbMultiSelectMode.Text = "Multi-select mode";

			this.cbMultiSelectMode.UseVisualStyleBackColor = true;

			this.cbMultiSelectMode.CheckedChanged += new System.EventHandler(this.cbMultiSelectMode_CheckedChanged);

			// 

			// Form1

			// 

			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

			this.ClientSize = new System.Drawing.Size(1177, 677);

			this.Controls.Add(this.cbMultiSelectMode);

			this.Controls.Add(this.cbAllowResizeSelection);

			this.Controls.Add(this.cbLockSelection);

			this.Controls.Add(this.pdfViewerControl1);

			this.Controls.Add(this.toolStrip1);

			this.Name = "Form1";

			this.Text = "Form1";

			this.toolStrip1.ResumeLayout(false);

			this.toolStrip1.PerformLayout();

			this.ResumeLayout(false);

			this.PerformLayout();



		}



		#endregion



		private Bytescout.PDFViewer.PDFViewerControl pdfViewerControl1;

		private System.Windows.Forms.ToolStrip toolStrip1;

		private System.Windows.Forms.ToolStripButton tsbOpen;

		private System.Windows.Forms.CheckBox cbLockSelection;

		private System.Windows.Forms.CheckBox cbAllowResizeSelection;

		private System.Windows.Forms.CheckBox cbMultiSelectMode;

	}

}




Program.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace Example
{
	static class Program
	{
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new Form1());
		}
	}
}

Resources.Designer.cs
��//------------------------------------------------------------------------------

// <auto-generated>

//     This code was generated by a tool.

//     Runtime Version:4.0.30319.34014

//

//     Changes to this file may cause incorrect behavior and will be lost if

//     the code is regenerated.

// </auto-generated>

//------------------------------------------------------------------------------



namespace Example.Properties {

    using System;

    

    

    /// <summary>

    ///   A strongly-typed resource class, for looking up localized strings, etc.

    /// </summary>

    // This class was auto-generated by the StronglyTypedResourceBuilder

    // class via a tool like ResGen or Visual Studio.

    // To add or remove a member, edit your .ResX file then rerun ResGen

    // with the /str option, or rebuild your VS project.

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

    internal class Resources {

        

        private static global::System.Resources.ResourceManager resourceMan;

        

        private static global::System.Globalization.CultureInfo resourceCulture;

        

        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]

        internal Resources() {

        }

        

        /// <summary>

        ///   Returns the cached ResourceManager instance used by this class.

        /// </summary>

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]

        internal static global::System.Resources.ResourceManager ResourceManager {

            get {

                if (object.ReferenceEquals(resourceMan, null)) {

                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Example.Properties.Resources", typeof(Resources).Assembly);

                    resourceMan = temp;

                }

                return resourceMan;

            }

        }

        

        /// <summary>

        ///   Overrides the current thread's CurrentUICulture property for all

        ///   resource lookups using this strongly typed resource class.

        /// </summary>

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]

        internal static global::System.Globalization.CultureInfo Culture {

            get {

                return resourceCulture;

            }

            set {

                resourceCulture = value;

            }

        }

        

        /// <summary>

        ///   Looks up a localized resource of type System.Drawing.Bitmap.

        /// </summary>

        internal static System.Drawing.Bitmap folder_page {

            get {

                object obj = ResourceManager.GetObject("folder_page", resourceCulture);

                return ((System.Drawing.Bitmap)(obj));

            }

        }

    }

}


Settings.Designer.cs
��//------------------------------------------------------------------------------

// <auto-generated>

//     This code was generated by a tool.

//     Runtime Version:4.0.30319.34014

//

//     Changes to this file may cause incorrect behavior and will be lost if

//     the code is regenerated.

// </auto-generated>

//------------------------------------------------------------------------------



namespace Example.Properties {

    

    

    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]

    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        

        public static Settings Default {

            get {

                return defaultInstance;

            }

        }

    }

}


Download Source Code (.zip)

Return to the previous page Explore PDF Viewer SDK


Copyright © 2016 - 2021 ByteScout