本主题描述如何在LEADTOOLS中使用自定义回调实现绘制到非标准灰度显示适配器。
概述:
有几个实现自定义绘画的类。这些类使您能够覆盖一些系统绘图函数,以访问高级图形显示中的额外特性。特别值得注意的是可以显示超过8位灰度颜色的显示适配器。
要利用这些特性,可以实现aLeadtools.Drawing.RasterPaintCallbacks类,并将其添加到Leadtools.Drawing.RasterPaintProperties.PaintCallbacks.一个希望支持多个显卡的应用程序将为每个适配器创建一个类,并将它们全部添加到RasterImagePainter。PaintCallbacks列表。
这个列表是必需的,因为运行应用程序的计算机可能有多个显示器和多个显示适配器。用户可以将窗口从一个监视器拖到另一个监视器,因此您应该使用与系统中显示适配器兼容的所有自定义绘制对象填充PaintCallbacks列表。或者您可以添加所有您可以支持的显示适配器,因为在列表中有不必要的回调的开销很低。
每当一个Leadtools。光栅Image对象需要绘制时,它将尝试所有自定义回调对象,直到找到与当前显示适配器兼容的对象。如果它没有找到任何兼容的对象,它将使用默认的GDI函数进行绘制。
对于每个RasterPaintCallbacks对象,RasterImage将执行以下操作:
如果应用程序在没有IsCompatibleDCCallback委托的情况下将RasterPaintCallbacks对象添加到列表中,则该对象将始终用于执行绘制。RasterImagePainter中的剩余项。PaintCallbacks列表将不会被查询。
所有的油漆回调都是看起来相同的委托(c++语法):
Object^ MyCallback(RasterImage^ image, array
每个回调的参数都是不同的,并且通过Params参数传递。看到Leadtools.Drawing.RasterPaintProperties.PaintCallbacks获取关于为每个回调类型传递哪些参数的信息。
参数仅用于读取。需要回传信息的回调将通过其返回值来执行。当需要返回多个值时,将使用类来实现此目的(请参阅RasterImagePaintCallbackFunction。GetDibInfoCallback回调这样的例子)。
您不需要实现每个回调。你可以实现1、2、3或任意数量的回调。如果没有提供回调,将使用默认的内部回调。
至少,你应该考虑以下回调:
回调 | 用途/描述 |
IsCompatibleDCCallback | 测试HDC与显示适配器是否兼容 |
GetDibInfoCallback | 告诉LEADTOOLS设备期望的数据类型 |
StretchDIBitsCallback | 实现实际的绘画 |
ConvertLineCallback | 如果内部的颜色转换功能不够,要进行颜色转换。建议您先尝试内部转换函数 |
PrePaintCallback | 为当前绘制执行任何内存分配或初始化 |
PostPaintCallback | 释放在PrePaintCallback中分配的内存 |
回调被添加到RasterPaintCallbacks对象使用Leadtools.Drawing.RasterPaintCallbacks.SetCallback (Leadtools.Drawing.RasterImagePaintCallbackFunction Leadtools.Drawing.PaintCallbackDelegate).所以伪代码可能是这样的:
分配并初始化回调类*/
myCallbacks = gcnew RasterPaintCallbacks();
myCallbacks - > SetCallback (IsCompatibleDCCallback myFunc1);
myCallbacks - > SetCallback (GetDibInfoCallback myFunc2);
/*添加回调到RasterImage对象*/
myRasterImage - > RasterPaint - >添加(myCallbacks);
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。