我正在尝试关注此article并且很容易实现 text over image
,现在我的问题出现在上面提到的图片水印放置左起10个像素所以我如何将图像放置在右上角,中上,中左,中,右中,类似于底部。
以下是如何放置在右上角:
int xPosOfWm = ((phWidth - wmWidth)-10);
int yPosOfWm = 10;
grWatermark.DrawImage(
imgWatermark,
new Rectangle(
xPosOfWm, yPosOfWm,
wmWidth, wmHeight
),
0, 0,
wmWidth, wmHeight,
GraphicsUnit.Pixel,
imageAttributes
);
答案 0 :(得分:0)
问题是您必须先计算图像的高度和宽度
计算原始图像高度和宽度
Image oImage="path";
var oheight=oImage.Height;
var oWidth=oImage.width;
现在计算要放在其上的图像
var WmImage="path";
var wWheight=WmImage.Height;
var wWidth=WmoImage.width;
右上
var left=oWidth-wWidth-10;
var top=oheight-10;
//draw the wate mark image on thse point
oImage.DrawImage(imgWatermark,new Rectangle(left,top,wmWidth,
wmHeight),0,0,wmWidth,wmHeight,GraphicsUnit.Pixel,imageAttributes);
类似地,您可以计算其他图像alos。
答案 1 :(得分:0)
当前代码不会将水印放在左上角,而是放在右上角。
要将其放在左上角,请使用:
int xPosOfWm = 10;
int yPosOfWm = 10;
将水印水平放置在左侧,中间和右侧:
int xPosOfWm = 10;
int xPosOfWm = (phWidth - wmWidth) / 2;
int xPosOfWm = (phWidth - wmWidth) - 10;
将水印垂直放置在顶部,中间和底部:
int yPosOfWm = 10;
int yPosOfWm = (phHeight - wmHeight) / 2;
int yPosOfWm = (phHeight - wmHeight) - 10;
只需将一个水平面与一个垂直面相结合即可获得您想要的任何组合。