///
/// 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;
}
洋果子店rose最新版本
洋果子店最新版是一款十分容易让人垂涎的开店经营类手游。游戏玩
明日大亨最新版
明日大亨手游,一个非常经典有趣的模拟经营类型的商战手游,在游
早安我的少年日服最新版2024
早安我的少年日服是一款治愈恋爱手游,清新明亮的游戏画面,让你
我的世界基岩版1.16正式版
我的世界基岩版是一款模拟经营手游,游戏采用的是经典像素玩法,
早安我的少年最新版2024
早安我的少年是一款养成恋爱手游,在这款游戏中,玩家们将可以体