using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace Khendys.Controls {
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com)#region Public Enums
// Enum for possible RTF colors
public enum RtfColor {
Black, Maroon, Green, Olive, Navy, Purple, Teal, Gray, Silver,
Red, Lime, Yellow, Blue, Fuchsia, Aqua, White
}
#endregion
public class ExRichTextBox : System.Windows.Forms.RichTextBox {
#region My Enums
// Specifies the flags/options for the unmanaged call to the GDI+ method
// Metafile.EmfToWmfBits().
private enum EmfToWmfBitsFlags {
// Use the default conversion
EmfToWmfBitsFlagsDefault = 0x00000000,
// Embedded the source of the EMF metafiel within the resulting WMF
// metafile
EmfToWmfBitsFlagsEmbedEmf = 0x00000001,
// Place a 22-byte header in the resulting WMF file. The header is
// required for the metafile to be considered placeable.
EmfToWmfBitsFlagsIncludePlaceable = 0x00000002,
// Don't simulate clipping by using the XOR operator.
EmfToWmfBitsFlagsNoXORClip = 0x00000004
};
#endregion
#region My Structs
// Definitions for colors in an RTF document
private struct RtfColorDef {
public const string Black = @"red0green0blue0";
public const string Maroon = @"red128green0blue0";
public const string Green = @"red0green128blue0";
public const string Olive = @"red128green128blue0";
public const string Navy = @"red0green0blue128";
public const string Purple = @"red128green0blue128";
public const string Teal = @"red0green128blue128";
public const string Gray = @"red128green128blue128";
public const string Silver = @"red192green192blue192";
public const string Red = @"red255green0blue0";
public const string Lime = @"red0green255blue0";
public const string Yellow = @"red255green255blue0";
public const string Blue = @"red0green0blue255";
public const string Fuchsia = @"red255green0blue255";
public const string Aqua = @"red0green255blue255";
public const string White = @"red255green255blue255";
}
// Control words for RTF font families
private struct RtfFontFamilyDef {
public const string Unknown = @"fnil";
public const string Roman = @"froman";
public const string Swiss = @"fswiss";
public const string Modern = @"fmodern";
public const string Script = @"fscript";
public const string Decor = @"fdecor";
public const string Technical = @"ftech";
public const string BiDirect = @"fbidi";
}
#endregion
#region My Constants
// Not used in this application. Descriptions can be found with documentation
// of Windows GDI function SetMapMode
private const int MM_TEXT = 1;
private const int MM_LOMETRIC = 2;
private const int MM_HIMETRIC = 3;
private const int MM_LOENGLISH = 4;
private const int MM_HIENGLISH = 5;
private const int MM_TWIPS = 6;
// Ensu