日期:2014-05-20  浏览次数:20378 次

这是一段加水印的代码,为什么有的图片加上后字体比较大有的就很小呢?
System.Drawing.Image   image   =   System.Drawing.Image.FromFile(sourcepath);
Graphics   g   =   Graphics.FromImage(image);
g.DrawImage(image,   0,   0,   image.Width,   image.Height);
Font   f   =   new   Font( "华文彩云 ",   12);
Brush   b   =   new   SolidBrush(Color.FromArgb(110,   255,   255,   255));
string   addText   =   "科伟达   KEEPAHEAD ";
g.DrawString(addText,   f,   b,   0,   (image.Height   -   f.Height)   /   2);
g.Dispose();
image.Save(outpath);
image.Dispose();

还有就是怎么让字体居中显示呢?

------解决方案--------------------
g.DrawString(addText, f, b, 0, (image.Height - f.Height) / 2);

0 是水平位置,(image.Width - f.Width) / 2
------解决方案--------------------
被打水印的图片大,水印的字就小了,要想大小差不多,需要取出被打水印图片的宽高,进行比例缩放
------解决方案--------------------
我做的时候是设置一个 Left 的属性,让用户自己输入距离左边距的距离,当然设置之后要能看到效果。

另一个方法就是根据字数计算一下了,要考虑到英文占半格字符的情况,还有就是不同的英文字体每个字母的宽度是否相同。

字号定了,字应该不会变的,除非是跟随图片一起被放大(或者缩小)了。