如何向图像添加文本

时间:2014-11-22 05:41:54

标签: .net wpf leadtools-sdk

我用LEADTOOLS18扫描了一张图片。并在RasterImageViewer中显示它。

我想在图片中添加文字。

我使用此代码。

rasterImageViewer.BeginUpdate();
var container = new RasterImageGdiPlusGraphicsContainer(rasterImageViewer.Image);
container.Graphics.SmoothingMode = SmoothingMode.HighQuality;
Font font = new Font(new FontFamily("Tahoma"), 12);
var point = new PointF(200, 200);
container.Graphics.DrawString("LEADTOOLS", font, new SolidBrush(Color.Red), point);
rasterImageViewer.EndUpdate();
rasterImageViewer.UpdateLayout();

但不要添加文字!!!

1 个答案:

答案 0 :(得分:1)

您的代码是正确的,但它遗漏了一些东西。当您修改查看器的Image成员(Leadtools.RasterImage)时,这不是实际显示的图像。它必须首先转换为WPF ImageSource,然后存储在查看器的Source属性中。

当您使用LEADTOOLS图像处理类之一时,它会自动执行此转换,例如此代码:

Leadtools.ImageProcessing.Effects.AverageCommand average = new AverageCommand(3);
average.Run(rasterImageViewer.Image);

但是,当您使用Graphics命令在图像上绘图时,您需要通知控件Image已更改,以便更新Source。一种方法是在代码之后直接引发RasterImage.Changed事件:

rasterImageViewer.Image.OnChanged(new
    Leadtools.RasterImageChangedEventArgs(Leadtools.RasterImageChangedFlags.Data));

另一种方法是自己执行转换:

var src = Leadtools.Windows.Media.RasterImageConverter.ConvertToSource(rasterImageViewer.Image,
    Leadtools.Windows.Media.ConvertToSourceOptions.None);
rasterImageViewer.Source = null;
rasterImageViewer.Source = src;