国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#基于兩種需求向圖片添加水印

2019-11-17 02:16:08
字體:
供稿:網(wǎng)友

C#基于兩種需求向圖片添加水印

使用場景

1、也就是大家經(jīng)常用的,一般是圖片的4個(gè)角落,基于橫縱坐標(biāo)來添加。

2、在圖片內(nèi)基于固定位置,文字始終居中。剛開始我基于第一種場景來根據(jù)水印漢字的長度來計(jì)算坐標(biāo),后來發(fā)現(xiàn)方法始終不可靠。現(xiàn)在是先在圖片固定區(qū)域(水印區(qū)域)畫一個(gè)矩形,然后再矩形內(nèi)添加水印漢字,并使用畫刷保持文字居中。

場景一效果

場景二效果

場景一添加水印方法

static void addWatermarkText(Graphics picture,int fontsize, string _watermarkText, string _watermarkPosition, int _width, int _height)        {            int[] sizes = new int[] {32, 14, 12, 10, 8, 6, 4 };            Font crFont = null;            SizeF crSize = new SizeF();            crFont = new Font("微軟雅黑", fontsize, FontStyle.Bold);            crSize = picture.MeasureString(_watermarkText, crFont);            float xpos = 0;            float ypos = 0;            Color color =Color.Firebrick;            switch (_watermarkPosition)            {                case "WM_TOP_LEFT":                    xpos = ((float)_width * (float).01) + (crSize.Width / 2);                    ypos = (float)_height * (float).01;                    break;                case "WM_TOP_RIGHT":                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);                    ypos = (float)_height * (float).01;                    break;                case "WM_BOTTOM_RIGHT":                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);                    ypos = ((float)_height * (float).99) - crSize.Height;                    break;                case "WM_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(_watermarkText, crFont, semiTransBrush2, xpos + 1, ypos + 1, StrFormat);            SolidBrush semiTransBrush = new SolidBrush(color);  //添加水印            picture.DrawString(_watermarkText, crFont, semiTransBrush, xpos, ypos, StrFormat);            semiTransBrush2.Dispose();            semiTransBrush.Dispose();        }

場景二添加水印方法

static void addWatermarkText(Graphics picture,string type, int fontsize, string _watermarkText)        {            //1、先畫矩形            RectangleF drawRect;            Color color;            if (type == "Top")            {                 drawRect = new RectangleF(73, 135, 450, 64);                 color = Color.FromArgb(255, 255, 255);            }            else            {                 drawRect = new RectangleF(194, 245, 250, 39);                 color = Color.FromArgb(244, 226, 38);            }                        //2、在基于矩形畫水印文字            Font crFont = null;            StringFormat StrFormat = new StringFormat();            StrFormat.Alignment = StringAlignment.Center;            crFont = new Font("微軟雅黑", fontsize, FontStyle.Bold);            SolidBrush semiTransBrush = new SolidBrush(color);  //添加水印            picture.DrawString(_watermarkText, crFont, semiTransBrush, drawRect, StrFormat);            semiTransBrush.Dispose();        }

總結(jié)

和第一種方法比起來,第二種方法更直觀,更短小精悍,只需要在你需要添加水印的圖片上計(jì)算好固定坐標(biāo)然后先畫一個(gè)矩形,然后把水印漢字畫在矩形內(nèi),這樣不管水印漢字如何變化都可以在圖片固定位置居中。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洛川县| 聂拉木县| 衡阳市| 桃江县| 贵港市| 若尔盖县| 五华县| 阿拉善左旗| 铜山县| 扎赉特旗| 平南县| 会同县| 思茅市| 朝阳县| 靖宇县| 南川市| 柘荣县| 高碑店市| 乌鲁木齐市| 卢氏县| 玉林市| 司法| 海丰县| 进贤县| 武强县| 涪陵区| 贵溪市| 涞源县| 信阳市| 孝感市| 河南省| 昔阳县| 岳池县| 安新县| 得荣县| 施秉县| 淳安县| 左权县| 营口市| 城市| 吴桥县|