亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

擴展的ToolStripEx控件

2019-11-17 03:55:40
字體:
來源:轉載
供稿:網友
 該控件擴展了ToolStrip的功能,增加了水印功能,增加了圖標在鼠標進入時自動增亮的功能。

  只要實現思想:

  擴展了ToolStripPRofessionalRenderer渲染器,重寫了OnRenderToolStripBorder、OnRenderSeparator、OnRenderItemImage、OnRenderToolStripBackground等幾個方法,從而實現背景,水印的實現。
代碼如下
    /// <summary>
    /// ToolStrip 渲染器。更改背景為過度顯示和鼠標進入時圖片自動增亮的功能。
    /// </summary>
    public class JWToolStripBarRenderer : ToolStripProfessionalRenderer
    {
        //Dictionary<string, Image> dict = new Dictionary<string, Image>();
        private Brush backgroundBrush = null;

        List<EtyImageState> m_ImageList = new List<EtyImageState>();

        public JWToolStripBarRenderer()
        {
            this.RoundedEdges = false;
        }

        /// <summary>
        /// 當更換背景顏色時,執行該方法才能生效,為的是提高效率。
        /// </summary>
        public void ResetBackgroundBrush()
        {
            this.backgroundBrush = null;
        }

        private Color m_ToolStripGradientBegin = SystemColors.InactiveBorder;
        /// <summary>
        /// 獲取在 ToolStrip 背景中使用的漸變的開始顏色。
        /// </summary>
        public Color ToolStripGradientBegin
        {
            get { return m_ToolStripGradientBegin; }
            set { m_ToolStripGradientBegin = value; }
        }

        private Color m_ToolStripGradientEnd = SystemColors.ControlLightLight;
        /// <summary>
        /// 獲取在 ToolStrip 背景中使用的漸變的結束顏色。
        /// </summary>
        public Color ToolStripGradientEnd
        {
            get { return m_ToolStripGradientEnd; }
            set { m_ToolStripGradientEnd = value; }
        }

        private BackgroundGradientStyle m_BackgroundGradientStyle = BackgroundGradientStyle.Horizontal;
        /// <summary>
        /// 設置背景漸變方式。
        /// </summary>
        public BackgroundGradientStyle BackgroundGradientStyle
        {
            get { return m_BackgroundGradientStyle; }
            set
            {
                m_BackgroundGradientStyle = value;
            }
        }

        private DrawBorderMode m_DrawBorderMode = DrawBorderMode.TopAndBottom;
        /// <summary>
        /// 畫ToolStrip邊框的形式。
        /// </summary>
        public DrawBorderMode DrawBorderMode
        {
            get { return m_DrawBorderMode; }
            set { m_DrawBorderMode = value; }
        }

        private Image m_WatermarkImage;
        /// <summary>
        /// 水印的圖片。
        /// </summary>
        ///
        public Image WatermarkImage
        {
            get { return m_WatermarkImage; }
            set { m_WatermarkImage = value; }
        }

        private int m_brightValue = 30;
        /// <summary>
        /// 鼠標進入時的圖片增亮值。默認為 30
        /// </summary>
        public int BrightValue
        {
            get { return m_brightValue; }
            set { m_brightValue = value; }
        }

        //protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
        //{
        //    e.ArrowColor = Color.Red;
        //    e.Direction = ArrowDirection.Right;
        //    base.OnRenderArrow(e);
        //}

        // This method draws a border around the GridStrip control.
        protected override void OnRenderToolStripBorder(
            ToolStripRenderEventArgs e)
        {
            base.OnRenderToolStripBorder(e);

            if (e.ToolStrip is ToolStripDropDown)    //過濾,根據需要可能還有更多的過濾
                return;

            using (Pen pen = new Pen(SystemColors.ButtonShadow))
            {
                if (m_DrawBorderMode == DrawBorderMode.TopAndBottom || m_DrawBorderMode == DrawBorderMode.TopOnly)
                    e.Graphics.DrawLine(pen, e.AffectedBounds.X, e.AffectedBounds.Y, e.AffectedBounds.Width, e.AffectedBounds.Y);
                if (m_DrawBorderMode == DrawBorderMode.TopAndBottom || m_DrawBorderMode == DrawBorderMode.BottomOnly)
                    e.Graphics.DrawLine(pen, e.AffectedBounds.X, e.AffectedBounds.Height - 1, e.AffectedBounds.Width, e.AffectedBounds.Height - 1);
            }
        }

        protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e)
        {
            if (e.ToolStrip.LayoutStyle == ToolStripLayoutStyle.Table || e.ToolStrip.LayoutStyle == ToolStripLayoutStyle.Flow)
            {
                base.OnRenderSeparator(new ToolStripSeparatorRenderEventArgs(e.Graphics, e.Item as ToolStripSeparator, false));
                //e.Graphics.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, 0, 100, 2));
            }
            else
                base.OnRenderSeparator(e);
        }

        //修改只保留原圖片。
        protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e)
        {
            Bitmap img = e.Image as Bitmap;
            if (img != null)
            {
                bool isEqualsInitImage = false;
                EtyImageState ety = EtyImageState.GetEtyImageState(m_ImageList, img.GetHashCode(), out isEqualsInitImage);
                if (ety == null)
                {
                    ety = new EtyImageState();
                    ety.InitImage = img;
                    ety.LightImage = ImageTool.Brightness(img, m_brightValue);
                    m_ImageList.Add(ety);
                }

                if (e.Item.Selected)
                    e.Item.Image = ety.LightImage;
                else
                    e.Item.Image = ety.InitImage;
            }
            base.OnRenderItemImage(e);
        }

        int borderPadding = 2;

        protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
        {
            base.OnRenderToolStripBackground(e);

            if (e.ToolStrip is ToolStripDropDown)    //過濾,根據需要可能還有更多的過濾
                return;

            //SystemColors.ControlLightLight,
            //SystemColors.InactiveBorder,
            Color gradientEnd = this.ToolStripGradientEnd;
            float angle = 0;
            if (m_BackgroundGradientStyle == BackgroundGradientStyle.Vertical)
                angle = 90;
            if (m_BackgroundGradientStyle == BackgroundGradientStyle.None)
                gradientEnd = this.ToolStripGradientBegin;

            if (this.backgroundBrush == null)
            {
                this.backgroundBrush = new LinearGradientBrush(
                   e.ToolStrip.ClientRectangle,
                   this.ToolStripGradientBegin,
                   gradientEnd,
                   angle,
                   true);
            }

            // Paint the GridStrip control's background.
            e.Graphics.FillRectangle(
                this.backgroundBrush,
                e.AffectedBounds);

            if (e.ToolStrip.GripStyle == ToolStripGripStyle.Visible)
            {
                ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(3, 3, 2, e.ToolStrip.Height - 6), Border3DStyle.Etched, Border3DSide.Left | Border3DSide.Right);
                ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(7, 3, 2, e.ToolStrip.Height - 6), Border3DStyle.Etched, Border3DSide.Left | Border3DSide.Right);
            }

            //顯示水印。
            if (m_WatermarkImage != null)
            {
                Point position = Point.Empty;
                int top = borderPadding;
                int left = 0;
                int width = 0;
                int height = 0;
                if (m_WatermarkImage.Height > e.ToolStrip.Height - borderPadding * 2)
                {
                    //重新定義圖片的顯示寬高
                    double rate = (double)m_WatermarkImage.Width / (double)m_WatermarkImage.Height;
                    height = e.ToolStrip.Height - borderPadding * 2;
                    width = Convert.ToInt32(rate * height);
                }
                else
                {
                    width = m_WatermarkImage.Width;
                    height = m_WatermarkImage.Height;
                    top = (e.ToolStrip.Height - height) / 2;

                }
                left = e.ToolStrip.Width - width - borderPadding * 2;

                position = new Point(left, top);
                Rectangle rect = new Rectangle(left, top, width, height);
                e.Graphics.DrawImage(m_WatermarkImage, rect, new Rectangle(0, 0, m_WatermarkImage.Width, m_WatermarkImage.Height), GraphicsUnit.Pixel);
            }
        }


        // This method handles the RenderGrip event.
        protected override void OnRenderGrip(ToolStripGripRenderEventArgs e)
        {
            //DrawTitleBar(
            //    e.Graphics,
            //    new Rectangle(0, 0, e.ToolStrip.Width, e.ToolStrip.Height));
            //ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(0, 3, 2, e.ToolStrip.Height - 6), Border3DStyle.RaisedInner);
            //ControlPaint.DrawBorder3D(e.Graphics, new Rectangle(3, 3, 2, e.ToolStrip.Height - 6), Border3DStyle.RaisedInner);
        }

    }

    /// <summary>
    /// 為保存圖片的狀態而設
    /// </summary>
    internal class EtyImageState
    {
        public int InitImageKey
        {
            get
            {
                if (m_InitImage == null)
                    return -1;
                else
                    return m_InitImage.GetHashCode();
            }
        }

        private Image m_InitImage;

        public Image InitImage
        {
            get { return m_InitImage; }
            set { m_InitImage = value; }
        }

        public int LightImageKey
        {
            get
            {
                if (m_LightImage == null)
                    return -1;
                else
                    return m_LightImage.GetHashCode();
            }
        }

        private Image m_LightImage;

        public Image LightImage
        {
            get { return m_LightImage; }
            set { m_LightImage = value; }
        }

        /// <summary>
        /// 從集合
        /// </summary>
        /// <param name="list"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static EtyImageState GetEtyImageState(List<EtyImageState> list, int key, out bool isEqualsInitImage)
        {
            isEqualsInitImage = false;
            EtyImageState retEty = null;
            foreach (EtyImageState ety in list)
            {
                if (ety.InitImageKey == key)
                {
                    isEqualsInitImage = true;
                    retEty = ety;
                    break;
                }
                else if (ety.LightImageKey == key)
                {
                    retEty = ety;
                    break;
                }
            }
            return retEty;
        }

    }

水印的處理(數字圖片處理)

    public static class ImageTool
    {
        /// <summary>
        /// 根據字符串生成圖片。
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static Bitmap DeserializeFromBase64(string data)
        {
            // Decode the string and create a memory stream
            // on the decoded string data.
            MemoryStream stream =
                new MemoryStream(Convert.FromBase64String(data));

            // Create a new bitmap from the stream.
            Bitmap b = new Bitmap(stream);

            return b;
        }
        //圖片 轉為    base64編碼的文本
        public static string ImgToBase64String(Image bmp)
        {
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, bmp.RawFormat);
            byte[] arr = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(arr, 0, (int)ms.Length);
            ms.Close();
            String strbase64 = Convert.ToBase64String(arr);
            return strbase64;
        }

        /// <summary>
        /// 圖片增亮。
        /// </summary>
        /// <param name="img"></param>
        /// <returns></returns>
        public static Image Brightness(Image img, int brightValue)
        {
            int percent = brightValue;
            Single v = 0.006F * percent;
            Single[][] matrix = {
                new Single[] { 1, 0, 0, 0, 0 },
                new Single[] { 0, 1, 0, 0, 0 },
                new Single[] { 0, 0, 1, 0, 0 },
                new Single[] { 0, 0, 0, 1, 0 },
                new Single[] { v, v, v, 0, 1 }
            };
            System.Drawing.Imaging.ColorMatrix cm = new System.Drawing.Imaging.ColorMatrix(matrix);
            System.Drawing.Imaging.ImageAttributes attr = new System.Drawing.Imaging.ImageAttributes();
            attr.SetColorMatrix(cm);
            //Image tmp
            //Image tmp = (Image)img.Clone();
            Bitmap tmp = new Bitmap(img);
            Graphics g = Graphics.FromImage(tmp);
            try
            {
                Rectangle destRect = new Rectangle(0, 0, img.Width, img.Height);
                g.DrawImage(tmp, destRect, 0, 0, tmp.Width, tmp.Height, GraphicsUnit.Pixel, attr);
            }
            finally
            {
                g.Dispose();
            }

            return tmp;

        }

        //處理不了透明的背景
        /// <summary>
        /// 制作水印圖片
        /// </summary>
        /// <param name="iTheImage">要制作水印的圖片</param>
        /// <param name="width">制作水印的寬</param>
        /// <param name="height">制作水印的高</param>
        /// <returns></returns>
        public static Bitmap WatermarkImage(Bitmap iTheImage, int width, int height)
        {
            //Bitmap watermark = new Bitmap(width, height,
            //        PixelFormat.Format24bppRgb);
            Bitmap watermark = new Bitmap(iTheImage);

            Graphics g = Graphics.FromImage(watermark);
            g.Clear(Color.White);
            //g.Clear(iTheImage.GetPixel(0,0));
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.High;

            ImageAttributes imageAttributes = new ImageAttributes();
            ColorMap colorMap = new ColorMap();

            colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
            colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
            ColorMap[] remapTable = { colorMap };

            imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);

            float[][] colorMatrixElements = {
                                                new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},
                                                new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
                                                new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},
                                                new float[] {0.0f, 0.0f, 0.0f, 0.3f, 0.0f},
                                                new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}
                                            };

            ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

            imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

            #region 保留學習

            ////int WatermarkWidth = 0;
            ////int WatermarkHeight = 0;
            ////double bl = 1d;

            //////計算水印圖片的比率
            //////取背景的1/4寬度來比較
            ////if ((width > watermark.Width * 4) && (height > watermark.Height * 4))
            ////{
            ////    bl = 1;
            ////}
            ////else if ((width > watermark.Width * 4) && (height < watermark.Height * 4))
            ////{
            ////    bl = Convert.ToDouble(height / 4) / Convert.ToDouble(watermark.Height);

            ////}
            ////else if ((width < watermark.Width * 4) && (height > watermark.Height * 4))
            ////{
            ////    bl = Convert.ToDouble(width / 4) / Convert.ToDouble(watermark.Width);
            ////}
            ////else
            ////{
            ////    if ((width * watermark.Height) > (height * watermark.Width))
            ////    {
            ////        bl = Convert.ToDouble(height / 4) / Convert.ToDouble(watermark.Height);

            ////    }
            ////    else
            ////    {
            ////        bl = Convert.ToDouble(width / 4) / Convert.ToDouble(watermark.Width);

            ////    }

            ////}

            ////WatermarkWidth = Convert.ToInt32(watermark.Width * bl);
            ////WatermarkHeight = Convert.ToInt32(watermark.Height * bl);


            ////switch (_watermarkPosition)
            ////{
            ////    case "WM_TOP_LEFT":
            ////        xpos = 10;
            ////        ypos = 10;
            ////        break;
            ////    case "WM_TOP_RIGHT":
            ////        xpos = _width - WatermarkWidth - 10;
            ////        ypos = 10;
            ////        break;
            ////    case "WM_BOTTOM_RIGHT":
            ////        xpos = _width - WatermarkWidth - 10;
            ////        ypos = _height - WatermarkHeight - 10;
            ////        break;
            ////    case "WM_BOTTOM_LEFT":
            ////        xpos = 10;
            ////        ypos = _height - WatermarkHeight - 10;
            ////        break;
            ////}

            #endregion

            try
            {
                Rectangle destRect = new Rectangle(0, 0, watermark.Width, watermark.Height);

                g.DrawImage(iTheImage, destRect, 0, 0, watermark.Width, watermark.Height,
                    GraphicsUnit.Pixel,
                    imageAttributes);
            }
            finally
            {
                imageAttributes.Dispose();
                g.Dispose();
            }

            return watermark;
        }

        /// <summary>
        /// 制作透明的圖片。對透明背景保留原來的樣子。
        /// </summary>
        /// <param name="bmpobj"></param>
        /// <param name="transValue">透明度 (0 - 255)</param>
        public static void WatermarkImage(Bitmap bmpobj, int transValue)
        {
            for (int i = 0; i < bmpobj.Height; i++)
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    Color dot = bmpobj.GetPixel(j, i);
                    if (dot.A > 0)
                    {
                        bmpobj.SetPixel(j, i, Color.White);
                        bmpobj.SetPixel(j,i,Color.FromArgb(transValue,dot.R,dot.G,dot.B));
                    }
                }
            }
        }

        /// <summary>
        /// 灰度轉換,逐點方式
        /// </summary>
        public static void GrayByPixels(Bitmap bmpobj)
        {
            for (int i = 0; i < bmpobj.Height; i++)
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    Color dot = bmpobj.GetPixel(j, i);
                    if (dot.A > 0)
                    {
                        int tmpValue = GetGrayNumColor(dot);
                        bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
                    }
                }
            }
        }
        /// <summary>
        /// 根據RGB,計算灰度值
        /// </summary>
        /// <param name="posClr">Color值</param>
        /// <returns>灰度值,整型</returns>
        private static int GetGrayNumColor(System.Drawing.Color posClr)
        {
            return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16;
        }


        ////public static bool Invert(Bitmap b)
        ////{
        ////    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
        ////       ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
        ////    int stride = bmData.Stride;
        ////    System.IntPtr Scan0 = bmData.Scan0;
        ////    unsafe
        ////    {
        ////        byte* p = (byte*)(void*)Scan0;
        ////        int nOffset = stride - b.Width * 3;
        ////        int nWidth = b.Width * 3;
        ////        for (int y = 0; y < b.Height; ++y)
        ////        {
        ////            for (int x = 0; x < nWidth; ++x)
        ////            {
        ////                p[0] = (byte)(255 - p[0]);
        ////                ++p;
        ////            }
        ////            p += nOffset;
        ////        }
        ////    }
        ////    b.UnlockBits(bmData);
        ////    return true;
        ////}

        ////public static bool Gray(Bitmap b)
        ////{
        ////    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
        ////              ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
        ////    int stride = bmData.Stride;
        ////    System.IntPtr Scan0 = bmData.Scan0;
        ////    unsafe
        ////    {
        ////        byte* p = (byte*)(void*)Scan0;
        ////        int nOffset = stride - b.Width * 3;
        ////        byte red, green, blue;
        ////        for (int y = 0; y < b.Height; ++y)
        ////        {
        ////            for (int x = 0; x < b.Width; ++x)
        ////            {
        ////                blue = p[0];
        ////                green = p[1];
        ////                red = p[2];
        ////                p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue);
        ////                p += 3;
        ////            }
        ////            p += nOffset;
        ////        }
        ////    }
        ////    b.UnlockBits(bmData);
        ////    return true;
        ////}

        ////public static bool Brightness(Bitmap b, int nBrightness)
        ////{
        ////    if (nBrightness < -255 || nBrightness > 255)
        ////        return false;
        ////    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width,
        ////                                b.Height), ImageLockMode.ReadWrite,
        ////                                PixelFormat.Format24bppRgb);
        ////    int stride = bmData.Stride;
        ////    System.IntPtr Scan0 = bmData.Scan0;
        ////    int nVal = 0;
        ////    unsafe
        ////    {
        ////        byte* p = (byte*)(void*)Scan0;
        ////        int nOffset = stride - b.Width * 3;
        ////        int nWidth = b.Width * 3;
        ////        for (int y = 0; y < b.Height; ++y)
        ////        {
        ////            for (int x = 0; x < nWidth; ++x)
        ////            {
        ////                nVal = (int)(p[0] + nBrightness);
        ////                if (nVal < 0) nVal = 0;
        ////                if (nVal > 255) nVal = 255;
        ////                p[0] = (byte)nVal;
        ////                ++p;
        ////            }
        ////            p += nOffset;
        ////        }
        ////    }
        ////    b.UnlockBits(bmData);
        ////    return true;
        ////}
    }

    /// <summary>
    /// 擴展的ToolStrip,更改背景為過度顯示和鼠標進入時圖片自動增亮的功能。
    /// </summary>
    public partial class ToolStripEx : ToolStrip
    {
        private JWToolStripBarRenderer render = new JWToolStripBarRenderer();
        public ToolStripEx()
        {
            this.Renderer = render;
        }


        /// <summary>
        /// 獲取在 ToolStrip 背景中使用的漸變的開始顏色。
        /// </summary>
        [Description("獲取在 ToolStrip 背景中使用的漸變的開始顏色。"), DefaultValue(typeof(Color), "InactiveBorder"), Category("特效設置")]
        public Color ToolStripGradientBegin
        {
            get { return render.ToolStripGradientBegin; }
            set
            {
                render.ToolStripGradientBegin = value;
                render.ResetBackgroundBrush();
                this.Invalidate();
            }
        }

        /// <summary>
        /// 獲取在 ToolStrip 背景中使用的漸變的結束顏色。
        /// </summary>
        [Description("獲取在 ToolStrip 背景中使用的漸變的結束顏色。"), DefaultValue(typeof(Color), "ControlLightLight"), Category("特效設置")]
        public Color ToolStripGradientEnd
        {
            get { return render.ToolStripGradientEnd; }
            set
            {
                render.ToolStripGradientEnd = value;
                render.ResetBackgroundBrush();
                this.Invalidate();
            }

        }

        /// <summary>
        /// 設置背景漸變方式。
        /// </summary>
        [Description("設置背景漸變方式。"), DefaultValue(typeof(BackgroundGradientStyle), "Horizontal"), Category("特效設置")]
        public BackgroundGradientStyle BackgroundGradientStyle
        {
            get { return render.BackgroundGradientStyle; }
            set
            {
                render.BackgroundGradientStyle = value;
                render.ResetBackgroundBrush();
                this.Invalidate();
            }
        }

         private Bitmap m_WatermarkImage;
        /// <summary>
        /// 水印的圖片。
        /// </summary>
        ///
        [Description("水印的圖片。"), DefaultValue(null), Category("特效設置")]
        public Bitmap WatermarkImage
        {
            get { return m_WatermarkImage; }
            set
            {
                m_WatermarkImage = value;
                //制作水印
                if (value != null)
                {
                    Bitmap img = new Bitmap(value);

                    if (m_watermarkGrayEffect)
                        ImageTool.GrayByPixels(img);
                    if (m_WatermarkTransparency != 255)
                        ImageTool.WatermarkImage(img, m_WatermarkTransparency);

                    render.WatermarkImage = img;
                }
                else
                    render.WatermarkImage = null;

                this.Invalidate();
            }
        }


        /// <summary>
        /// 畫ToolStrip邊框的形式。
        /// </summary>
        [Description("畫ToolStrip邊框的形式。"), DefaultValue(typeof(DrawBorderMode), "TopAndBottom"), Category("特效設置")]
        public DrawBorderMode DrawBorderMode
        {
            get { return render.DrawBorderMode; }
            set
            {
                render.DrawBorderMode = value;
                this.Invalidate();
            }
        }

        private bool m_watermarkGrayEffect = false;

        /// <summary>
        /// 水印的灰度效果,默認為 false;
        /// </summary>
        ///         
        [Description("水印的灰度效果,默認為 false;"), DefaultValue(false), Category("特效設置")]
        public bool WatermarkGrayEffect
        {
            get { return m_watermarkGrayEffect; }
            set
            {
                m_watermarkGrayEffect = value;
                WatermarkImage = m_WatermarkImage;
            }
        }

        private int m_WatermarkTransparency = 255;
        /// <summary>
        /// 水印顯示的透明度。
        /// </summary>
        ///
        [Description("水印顯示的透明度。默認為 255;"), DefaultValue(255), Category("特效設置")]
        public int WatermarkTransparency
        {
            get { return m_WatermarkTransparency; }
            set
            {
                if (value > 255 || value < 0)
                    throw new Exception("請輸入 0 - 255 之間的一個數值。");

                m_WatermarkTransparency = value;
                WatermarkImage = m_WatermarkImage;
            }
        }
    }



本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Yjianyong/archive/2009/12/27/5087300.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲另类制服自拍| 777午夜精品福利在线观看| 正在播放国产一区| 美女撒尿一区二区三区| 久久综合色88| 久热精品视频在线| 57pao成人永久免费视频| 538国产精品一区二区免费视频| 午夜精品久久久久久久久久久久久| 高清亚洲成在人网站天堂| 欧美日韩国产黄| 欧美大肥婆大肥bbbbb| 国产999精品久久久| 国产欧美久久久久久| 国语自产精品视频在线看抢先版图片| 国产成人精品一区二区在线| 欧美xxxx14xxxxx性爽| 欧美一区二区大胆人体摄影专业网站| 欧美高清视频在线观看| 亚洲最大福利视频| 久久手机精品视频| 26uuu另类亚洲欧美日本一| 日韩精品黄色网| 日韩免费av片在线观看| 国产精品久久久久久久久久东京| 亚洲精品天天看| 成人黄色生活片| 性欧美视频videos6一9| 久久99精品国产99久久6尤物| 国产精品露脸av在线| 91社区国产高清| 亚洲影院高清在线| 久久五月天综合| 一区二区三区 在线观看视| 欧美一级高清免费| 国产在线视频2019最新视频| 两个人的视频www国产精品| 久久影视电视剧免费网站清宫辞电视| 91九色在线视频| 日韩黄在线观看| 日本欧美爱爱爱| 尤物99国产成人精品视频| 亚洲一区二区三区四区视频| 国产成人高清激情视频在线观看| 亚洲电影免费观看高清完整版| 亚洲理论在线a中文字幕| 久久精品亚洲国产| 精品久久久久久久久久| 久久久久久亚洲| 欧美日韩在线观看视频小说| 欧美xxxwww| 欧美电影在线免费观看网站| 日韩二区三区在线| 欧美精品福利视频| 日韩av在线精品| 亚洲精品在线91| 国产欧美va欧美va香蕉在线| 欧美激情一区二区三级高清视频| 51午夜精品视频| 最近2019中文字幕在线高清| 色诱女教师一区二区三区| 日韩欧美在线视频| 亚洲影院色在线观看免费| 97在线看免费观看视频在线观看| 欧美成人免费视频| 国产精品自产拍高潮在线观看| 自拍偷拍亚洲精品| 亚洲精品电影在线| 欧美激情国产日韩精品一区18| 欧美巨大黑人极品精男| 亚洲va欧美va国产综合剧情| 欧美激情18p| 91在线视频九色| 色综合91久久精品中文字幕| 日韩美女av在线| 日韩一区二区三区国产| 日韩欧美a级成人黄色| 高清日韩电视剧大全免费播放在线观看| 国产精品日韩电影| 久久综合免费视频| 国产精品一香蕉国产线看观看| 亚洲欧洲av一区二区| 97香蕉超级碰碰久久免费的优势| 精品视频—区二区三区免费| 亚洲一区二区三区久久| 夜夜嗨av色综合久久久综合网| 正在播放欧美视频| 国产精品高潮呻吟久久av野狼| 久久夜色精品国产亚洲aⅴ| 91精品国产91久久久久久吃药| 亚洲美女www午夜| 亚洲成人av在线| 日韩hd视频在线观看| 日韩精品高清视频| 国产精品丝袜久久久久久不卡| 在线精品视频视频中文字幕| 精品夜色国产国偷在线| 亚洲人成电影网站| 91系列在线播放| 国产在线观看精品一区二区三区| 亚洲国产精品小视频| 国产精品毛片a∨一区二区三区|国| 米奇精品一区二区三区在线观看| 91日韩在线播放| 欧美日韩在线观看视频小说| 免费av在线一区| 91国产中文字幕| 97久久久免费福利网址| 成人网在线免费观看| 国产精品久久国产精品99gif| 欧美视频在线视频| 国产视频观看一区| 欧美大码xxxx| 亚洲乱亚洲乱妇无码| 国产亚洲视频中文字幕视频| 久久久久久久久久久久av| 欧美成人免费网| 日韩精品久久久久久久玫瑰园| 这里只有精品视频在线| 日韩在线欧美在线国产在线| 精品亚洲国产视频| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品一区三区| 国产精品av在线播放| 日韩美女在线播放| 欧美日韩高清在线观看| 26uuu久久噜噜噜噜| 中文字幕亚洲第一| 91chinesevideo永久地址| 欧美黑人一区二区三区| 成人黄色av免费在线观看| 欧美日韩国产综合视频在线观看中文| 亚洲毛片在线观看| 国产一区二区三区视频| 91免费福利视频| 国产精品露脸av在线| 国产不卡在线观看| 国产精品久久久91| 91色在线观看| www.亚洲一区| 亚洲第一区第二区| 日韩av大片免费看| 国产精品久久综合av爱欲tv| 久久艳片www.17c.com| 尤物九九久久国产精品的分类| 国产日韩精品视频| 97视频在线观看成人| 色综合天天综合网国产成人网| 精品久久久久久久久久久| 欧美日韩在线观看视频| 亚洲专区中文字幕| 欧美日韩在线免费观看| 亚洲性视频网站| 丰满岳妇乱一区二区三区| 1769国内精品视频在线播放| 亚洲国产精品va在看黑人| 日韩在线视频一区| 久久精品成人动漫| 最近中文字幕2019免费| 国产在线观看不卡| 日韩美女中文字幕| 色狠狠久久aa北条麻妃| 亚洲国产精品大全| 亚洲精品久久久久久久久久久|