1

我用 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();

但不要添加文字!!!

4

1 回答 1

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;
于 2014-11-24T22:05:45.207 回答