公共静态RasterImageAllocateCallbackSetRasterImageAllocateCallback (
RasterImageAllocateCallback回调
)
公共共享函数SetRasterImageAllocateCallback (_
按值传递回调作为RasterImageAllocateCallback_
)作为RasterImageAllocateCallback
公共:
静态RasterImageAllocateCallback ^SetRasterImageAllocateCallback (
RasterImageAllocateCallback ^回调
)
回调
方法,在工具包创建新的RasterImage对象。你可以通过零停止工具箱调用任何回调。
之前的全局回调集,或零如果之前没有设置回调(默认)。
此方法允许您在工具箱创建新的内存模型时检查(并更改正在使用的内存模型)RasterImage对象。一般来说,您可以使用RasterMemoryFlags的参数RasterImage构造函数时创建新对象,但是,在某些情况下,工具包将在内部创建图像,并且您无法控制传递的内存模型。回调集对于当前流程中使用的所有LEADTOOLS都是全局的。
这对于调试或控制在LEADTOOLS中内部创建的图像的内存模型非常有用,例如,作为示例中描述的图像处理操作的结果。
返回值是用户之前设置的旧回调,如果之前没有设置回调,此方法将返回零,这允许你级联回调在一起。
默认情况下,工具箱不设置回调,第一次调用此方法总是会返回零.
当你完成回调时,你可以用零引用来阻止工具箱在创建时调用任何方法RasterImage对象。
方法,下面的示例将展示如何使用SetRasterImageAllocateCallback方法来停止LEADTOOLS创建任何磁盘映像。的RotateCommand在本例中使用将在内部创建一个新的RasterImage对象。默认情况下,用户无法控制此图像的内存模型,但是,通过使用此回调,用户可以控制(和更改)所使用的内存模型。
使用Leadtools;
使用Leadtools.Codecs;
私人无效SetRasterImageAllocateCallbackExample ()
{
试一试
{
//将LEADTOOLS临时目录设置为我们可以轻松查看的值
RasterDefaults。临时目录= Path.Combine(LEAD_VARS.ImagesDir,@ Temp \ LEADTOOLS”);
//安装一个回调函数,在创建LEADTOOLS映像时通知我们
//重要:SetRasterImageAllocateCallback是全局的,不是线程安全的。它会发射
//在此之后创建的每个图像,因此如果您正在执行的操作
//回调需要同步,添加所需的代码。这个样本正在尝试什么
//我们的解决方案是完全安全的,不需要同步。
RasterDefaults。SetRasterImageAllocateCallback (新RasterImageAllocateCallback (MyRasterImageAllocateCallback));
//我们只需要常规内存
RasterMemoryFlags = RasterMemoryFlags。常规|光栅内存标志。NoDisk|RasterMemoryFlags。NoTiled;
//创建一个巨大的光栅图像
使用(RasterImage img =新RasterImage(flags, 20000, 20000, 24, RasterByteOrder。Bgr RasterViewPerspective。TopLeft,零,零, 0))
{
//旋转90度,这将有一个大于默认的内存大小
//常规内存大小,并导致LEADTOOLS切换到磁盘或平铺内存
/ /模型。在下面的回调中,我们指示LEADTOOLS只使用常规内存,因此命令
//将像预期的那样抛出内存溢出异常。
Leadtools.ImageProcessing.RotateCommand cmd =新Leadtools.ImageProcessing.RotateCommand ();
cmd。角度= 90 * 100;
//异常将在这里抛出:自我们的回调以来没有内存
//将被调用,我们指示LEADTOOLS不使用磁盘
cmd.Run (img);
}
}
抓(异常交货)
{
//显示错误
Console.WriteLine (ex.Message);
}
}
私人静态MyRasterImageAllocateCallback(RasterImageAllocateData数据)
{
控制台。WriteLine (“试图分配:”);
控制台。WriteLine (“记忆:{0}”, data.MemoryFlags);
控制台。WriteLine (尺寸:{0}by {1}、数据。宽度,data.Height);
控制台。WriteLine (“BPP:{0},订单:{1}”、数据。BitsPerPixel data.Order);
控制台。WriteLine (" Size: {0}", data.Size);
//注意,MemoryFlags旁边的所有值都是只读的,不能更改
//我们想要的是传统的内存,而不是其他的,所以改变这个
数据。MemoryFlags = RasterMemoryFlags。传统的|RasterMemoryFlags。NoTiled|RasterMemoryFlags。NoDisk;
//如果你移除上面的代码,工具箱将很可能切换到磁盘或平铺内存模型
//和创建这个巨大的图像将是成功的,然而,我们只想要常规
//内存在这个例子中,并且内存溢出异常是预期的行为
/ /实例
//让LEADTOOLS继续创建图像进程
//你可以返回任何其他值来abort
返回RasterExceptionCode.Success;
}
静态类LEAD_VARS
{
公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”;
}
进口Leadtools
进口Leadtools。编解码器
进口Leadtools。ImageProcessing
私人子SetRasterImageAllocateCallbackExample ()
试一试
将LEADTOOLS临时目录设置为我们可以轻松查看的值
RasterDefaults。TemporaryDirectory =“C: \ Temp \ LEADTOOLS”
'安装一个回调通知我们当LEADTOOLS图像创建
重要:SetRasterImageAllocateCallback是全局的,不是线程安全的。它会发射
'对于在此之后创建的每张图像,因此如果您在
'回调需要同步,添加所需的代码。这个样本正在尝试什么
我们的解决方案是完全安全的,不需要同步。
RasterDefaults。SetRasterImageAllocateCallback (AddressOfMyRasterImageAllocateCallback)
“我们只想要传统的内存,别无其他
昏暗的旗帜作为RasterMemoryFlags = RasterMemoryFlags。传统的或RasterMemoryFlags。NoDisk或RasterMemoryFlags。NoTiled
创建一个巨大的光栅图像
使用img作为RasterImage =新RasterImage(flags, 20000, 20000, 24, RasterByteOrder。Bgr RasterViewPerspective。TopLeft,没有什么,没有什么, 0)
'将其旋转90度,这将有一个大于默认的内存大小
'大小的常规内存,并导致LEADTOOLS切换到磁盘或平铺内存
”模型。在下面的回调中,我们指示LEADTOOLS只使用常规内存,因此命令
'将像预期的那样抛出内存不足异常。
昏暗的cmd作为新RotateCommand
cmd。角度= 90 * 100
'异常将在这里抛出:自我们的回调以来没有内存
'将被调用,我们指示LEADTOOLS不使用磁盘
cmd.Run (img)
结束使用
抓前女友作为异常
显示错误
Console.WriteLine (ex.Message)
结束试一试
结束子
私人共享函数MyRasterImageAllocateCallback (按值传递数据作为RasterImageAllocateData)作为RasterExceptionCode
控制台。WriteLine (“试图分配:”)
控制台。WriteLine (“记忆:{0}”data.MemoryFlags)
控制台。WriteLine (尺寸:{0}by {1}、数据。宽度,data.Height)
控制台。WriteLine (“BPP:{0},订单:{1}”、数据。BitsPerPixel,数据。订单)
控制台。WriteLine (" Size: {0}"data.Size)
注意,MemoryFlags旁边的所有值都是只读的,不能更改
“我们只想要传统的内存,所以要改变这一点
数据。MemoryFlags = RasterMemoryFlags。传统的或RasterMemoryFlags。NoTiled或RasterMemoryFlags。NoDisk
如果你删除上面的代码,工具包很可能会切换到磁盘或平铺内存模式
’而创造这样一个巨大的形象将会成功,然而,我们只想要传统
'内存,内存溢出异常是预期的行为
的例子
让LEADTOOLS继续创建图像过程
'您可以返回任何其他值来中止
返回RasterExceptionCode。成功
结束函数
帮助收藏
光栅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点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。