-2

我正在尝试遵循这篇文章,它很容易实现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
);
4

2 回答 2

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);

同样,您可以计算其他图像。

于 2013-02-10T03:35:01.967 回答
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;

只需将一种水平与一种垂直组合即可获得您想要的任何组合。

于 2013-02-10T03:35:04.617 回答