///
/// creating a watermarked photograph with gdi+ for .net
///
/// 原始图片的物理路径
/// 水印图片的物理路径
/// 水印文字(不显示水印文字设为空串)
/// 输出合成后的图片的物理路径
/// @整理: [email protected]
public void buildwatermark(string rsrcimgpath,string rmarkimgpath,string rmarktext,string rdstimgpath)
{
//以下(代码)从一个指定文件创建了一个image 对象,然后为它的 width 和 height定义变量。
//这些长度待会被用来建立一个以24 bits 每像素的格式作为颜色数据的bitmap对象。
image imgphoto = image.fromfile(rsrcimgpath);
int phwidth = imgphoto.width;
int phheight = imgphoto.height;
bitmap bmphoto=new bitmap(phwidth,phheight, pixelformat.format24bpprgb);
bmphoto.setresolution(72,72);
graphics grphoto = graphics.fromimage(bmphoto);
//这个代码载入水印图片,水印图片已经被保存为一个bmp文件,以绿色(a=0,r=0,g=255,b=0)作为背景颜色。
//再一次,会为它的width 和height定义一个变量。
image imgwatermark = new bitmap(rmarkimgpath);
int wmwidth = imgwatermark.width;
int wmheight = imgwatermark.height;
//这个代码以100%它的原始大小绘制imgphoto 到graphics 对象的(x=0,y=0)位置。
//以后所有的绘图都将发生在原来照片的顶部。
grphoto.smoothingmode = smoothingmode.antialias;
grphoto.drawimage(
imgphoto,
new rectangle(0, 0, phwidth, phheight),
0,
0,
phwidth,
phheight,
graphicsunit.pixel);
//为了最大化版权信息的大小,我们将测试7种不同的字体大小来决定我们能为我们的照片宽度使用的可能的最大大小。
//为了有效地完成这个,我们将定义一个整型数组,接着遍历这些整型值测量不同大小的版权字符串。
//一旦我们决定了可能的最大大小,我们就退出循环,绘制文本
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 = grphoto.measurestring(rmarktext,
crfont);
if((ushort)crsize.width < (ushort)phwidth)
break;
}
野比大雄的涅槃 最新版v0.8-625
野比大雄的涅槃是一款非常好玩的从端游移植而来的精品哆啦A梦同
汽车模拟器2内置菜单全车解锁版2024 最新版v1.54.2
汽车模拟器2内置涂装版是游戏的破解版本,在该版本中为玩家提供
快递到了亲内置菜单 安卓版v0.6.2
快递到了亲内置菜单是一款非常好玩的模拟经营类手游,内部有功能
我的世界为时已晚模组整合包 手机版v皮神木马
我的世界为时已晚模组整合包是一款剧情向的恐怖游戏像素风格沙盒
纸牌农庄内购版 v1.12.77
纸牌农庄无限道具版是一款将纸牌与模拟经营相结合的游戏,为玩家