我用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();
但不要添加文字!!!
答案 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;