Esempio n. 1
0
        /// <summary>
        /// ��ˮӡͼƬ
        /// </summary>
        /// <param name="picture">imge ����</param>
        /// <param name="_width">ԭʼͼƬ�Ŀ��</param>
        /// <param name="_height">ԭʼͼƬ�ĸ߶�.</param>
        private void addWatermarkImage(Graphics picture, int _width, int _height, HTProject_Bizlogic.CommonEnum.WaterMarkPosition Pos)
        {
            if (!System.IO.File.Exists(this.Page.MapPath(this.WatermarkImageUrl)))
            {
                return;
            }
            System.Drawing.Image watermark = new Bitmap(this.Page.MapPath(this.WatermarkImageUrl));

            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);

            int xpos = 0;
            int ypos = 0;
            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 = watermark.Width; //Convert.ToInt32(_width);
            WatermarkHeight = watermark.Height;// Convert.ToInt32(_height);

            //switch (Pos)
            //{
            //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_LEFT:
            //        xpos = 0;
            //        ypos = 0;
            //        break;
            //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_RIGHT:
            //        xpos = _width - WatermarkWidth - 10;
            //        ypos = 10;
            //        break;
            //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_RIGHT:
            //        xpos = _width - WatermarkWidth - 10;
            //        ypos = _height - WatermarkHeight - 10;
            //        break;
            //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_LEFT:
            //        xpos = 0;
            //        ypos = _height - WatermarkHeight - 10;
            //        break;
            //}

            //picture.DrawImage(watermark, new Rectangle(xpos, ypos, WatermarkWidth, WatermarkHeight), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, imageAttributes);
            //ѭ������ˮӡ
            for (int y = 0; y < _height; y = y + WatermarkHeight)
            {
                for (int x = 0; x < _width; x = x + WatermarkWidth)
                {
                    //switch (Pos)
                    //{
                    //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_LEFT:
                    //        xpos = 0;
                    //        ypos = 0;
                    //        break;
                    //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_RIGHT:
                    //        xpos = _width - WatermarkWidth - 10;
                    //        ypos = 10;
                    //        break;
                    //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_RIGHT:
                    //        xpos = _width - WatermarkWidth - 10;
                    //        ypos = _height - WatermarkHeight - 10;
                    //        break;
                    //    case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_LEFT:
                    //        xpos = 0;
                    //        ypos = _height - WatermarkHeight - 10;
                    //        break;
                    //}
                    xpos = x;
                    ypos = y;
                    picture.DrawImage(watermark, new Rectangle(xpos, ypos, WatermarkWidth, WatermarkHeight), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, imageAttributes);
                }
            }

            watermark.Dispose();
            imageAttributes.Dispose();
        }
Esempio n. 2
0
        /// <summary>
        /// ��ˮӡ����
        /// </summary>
        /// <param name="picture">imge ����</param>
        /// <param name="_width">ԭʼͼƬ�Ŀ��</param>
        /// <param name="_height">ԭʼͼƬ�ĸ߶�.</param>
        private void addWatermarkText(Graphics picture, int _width, int _height, HTProject_Bizlogic.CommonEnum.WaterMarkPosition Pos)
        {
            int[] sizes = new int[] { 16, 14, 12, 10, 8, 6, 4 };
            Font crFont = null;
            SizeF crSize = new SizeF();
            for (int i = 0; i < 7; i++)
            {
                crFont = new Font("arial", sizes[i], FontStyle.Bold);
                crSize = picture.MeasureString(this.WatermarkText, crFont);

                if ((ushort)crSize.Width < (ushort)_width)
                    break;
            }

            float xpos = 0;
            float ypos = 0;

            switch (Pos)
            {
                case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_LEFT:
                    xpos = ((float)_width * (float).01) + (crSize.Width / 2);
                    ypos = (float)_height * (float).01;
                    break;
                case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.TOP_RIGHT:
                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);
                    ypos = (float)_height * (float).01;
                    break;
                case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_RIGHT:
                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);
                    ypos = ((float)_height * (float).99) - crSize.Height;
                    break;
                case HTProject_Bizlogic.CommonEnum.WaterMarkPosition.BOTTOM_LEFT:
                    xpos = ((float)_width * (float).01) + (crSize.Width / 2);
                    ypos = ((float)_height * (float).99) - crSize.Height;
                    break;
            }

            StringFormat StrFormat = new StringFormat();
            StrFormat.Alignment = StringAlignment.Center;

            SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0));
            picture.DrawString(this.WatermarkText, crFont, semiTransBrush2, xpos + 1, ypos + 1, StrFormat);

            SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(153, 255, 255, 255));
            picture.DrawString(this.WatermarkText, crFont, semiTransBrush, xpos, ypos, StrFormat);

            semiTransBrush2.Dispose();
            semiTransBrush.Dispose();
        }
Esempio n. 3
0
        private void addWatermarkImage3(Graphics picture, int _width, int _height, HTProject_Bizlogic.CommonEnum.WaterMarkPosition Pos, string GZPath)
        {
            if (!System.IO.File.Exists(this.Page.MapPath(GZPath)))
            {
                return;
            }
            System.Drawing.Image watermark = new Bitmap(this.Page.MapPath(GZPath));

            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);

            int xpos = 0;
            int ypos = 0;
            int WatermarkWidth = 0;
            int WatermarkHeight = 0;
            double bl = 1d;

            WatermarkWidth = Convert.ToInt32(_width);//watermark.Width; //
            WatermarkHeight = Convert.ToInt32(_height);//watermark.Height;//

            //����ˮӡ
            xpos = 0;
            ypos = WatermarkHeight+5;
            picture.DrawImage(watermark, new Rectangle(xpos, ypos, WatermarkWidth, WatermarkHeight), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, imageAttributes);

            watermark.Dispose();
            imageAttributes.Dispose();
        }