使用C#/VB中的ImageMagick水平居中注释,但垂直设置位置

使用C#/VB中的ImageMagick水平居中注释,但垂直设置位置,c#,vb.net,imagemagick,C#,Vb.net,Imagemagick,我正在使用ImageMagick向图像添加文本,我需要文本水平居中,但我也希望能够设置垂直位置。我的代码可以工作,但将文本放置在画布边缘左侧50像素处,代码如下: 'This adds the address text block image.Settings.FillColor = MagickColors.Transparent image.Settings.StrokeColor = MagickColors.Transparent

我正在使用ImageMagick向图像添加文本,我需要文本水平居中,但我也希望能够设置垂直位置。我的代码可以工作,但将文本放置在画布边缘左侧50像素处,代码如下:

        'This adds the address text block
        image.Settings.FillColor = MagickColors.Transparent
        image.Settings.StrokeColor = MagickColors.Transparent
        image.Settings.FontPointsize = 195
        image.Annotate("508 West Earl Street", New MagickGeometry(50, 300, 150, 75), Gravity.Undefined, 0)
我需要的代码,以中心水平,使它从顶部垂直300px;类似于下面的东西,但我不知道用什么来代替X坐标来居中

        'This adds the address text block and should center it.
        image.Settings.FillColor = MagickColors.Transparent
        image.Settings.StrokeColor = MagickColors.Transparent
        image.Settings.FontPointsize = 195
        image.Annotate("508 West Earl Street", New MagickGeometry('This Value Needs to Center it', 300, 150, 75), Gravity.Undefined, 0)

如果你有图像的宽度,把它分成两半。您还可以将
gravity
属性设置为
center
以使文本居中对齐。您的注释代码应该如下所示:

image.Annotate("508 West Earl Street", New MagickGeometry(image.width/2, 300, 150, 75), Gravity.Center, 0)

如果您有图像的宽度,请将其一分为二。您还可以将
gravity
属性设置为
center
以使文本居中对齐。您的注释代码应该如下所示:

image.Annotate("508 West Earl Street", New MagickGeometry(image.width/2, 300, 150, 75), Gravity.Center, 0)

使用-gravity north,然后使用等效的-annotate“some text”+0+300。这将使文本水平居中,但将其从顶部向下移动300像素(北)。我想问题将是找出C#/VB中的等价物。下面是我尝试过的,而“Gravity.North”没有效果;文本总是在画布的左侧。image.Annotate(“Test”,New MagickGeometry(0,300,150,75),Gravity.North,0)我也尝试过image.Annotate(“Test”,Gravity.North,New MagickGeometry(0,300,150,75),0)同样的结果。我不明白为什么你需要4个值,如果你使用重力北,只需将图像向下300英寸Y。尝试将它们设置为0,这样你就有了(0300,0,0)。image.Annotate(“Test”,New MagickGeometry(0,365,0,0),gravity.north,0)也不起作用。它将文本的大部分放在画布的左侧。这4个数字在参数中是什么意思?它们是偏移量、大小还是旋转角度?你能给我指一下文档吗?否则,我建议你将你的问题发到Dremstra,Magick.NET的开发者,或者使用-gravity north and然后使用-annotate“some text”+0+300的等效项。这将使文本水平居中,但将其从顶部向下移动300像素(北)。我想问题是要找出C#/VB中的等效项。下面是我尝试过的内容,“Gravity.north”没有效果;文本始终位于画布的左侧。图像。注释(“测试”,新MagickGeometry(0,300,150,75),Gravity.North,0)我也尝试过图像。注释(“测试”,Gravity.North,新MagickGeometry(0,300,150,75),0)有相同的结果。我不明白如果你使用Gravity North,为什么你需要4个值,只是为了把图像放在Y方向300。尝试将它们设置为0,这样(0300,0,0).image.Annotate(“测试”,新的MagickGeometry(0365,0,0),Gravity.North,0)也不起作用。它将文本大部分放在画布的左侧。这4个数字在参数中是什么意思?它们是偏移量、大小还是旋转角度?你能给我指一下文件吗?否则,我建议你将你的问题发布到dlemstra,Magick.NET的开发者,或者你需要像我在评论中所说的那样,将
重力设置为
,然后使用+300 Y偏移量,使文本水平居中,从顶部向下300 px。你的解决方案只需修改一次即可。我无法从MagikGeometry中访问image.width,因此我将其放入一个变量中,然后在MagikGeometry中使用该变量,如下所示:Dim width As Integer=image.width Dim widthhalf As Integer=widthe/2 image.Annotation(“508 West Earl Street”,New MagickGeometry(widthhalf,300,150,75),Gravity.Center,0)谢谢!正如我在评论中所说,需要将
重力
设置为
,然后使用+300 Y偏移,使文本水平居中,并从顶部向下300 px。您的解决方案只需进行一次修改。我无法从MagikGeometry中访问image.width,因此我将其放入一个变量中,然后在MagikGeometry中使用该变量,如下所示:Dim width As Integer=image.width Dim widthhalf As Integer=widthe/2 image.Annotation(“508 West Earl Street”,New MagickGeometry(widthhalf,300,150,75),Gravity.Center,0)谢谢!