←选择平台

SetRasterImageAllocateCallback方法

总结
设置一个全局回调,以便在工具箱创建新的RasterImage对象。
语法
c#
VB
c++
公共静态RasterImageAllocateCallbackSetRasterImageAllocateCallback (RasterImageAllocateCallback回调
公共共享函数SetRasterImageAllocateCallback (_按值传递回调作为RasterImageAllocateCallback_作为RasterImageAllocateCallback
公共静态RasterImageAllocateCallback ^SetRasterImageAllocateCallback (RasterImageAllocateCallback ^回调

参数

回调
方法,在工具包创建新的RasterImage对象。你可以通过停止工具箱调用任何回调。

返回值

之前的全局回调集,或如果之前没有设置回调(默认)。

讲话

此方法允许您在工具箱创建新的内存模型时检查(并更改正在使用的内存模型)RasterImage对象。一般来说,您可以使用RasterMemoryFlags的参数RasterImage构造函数时创建新对象,但是,在某些情况下,工具包将在内部创建图像,并且您无法控制传递的内存模型。回调集对于当前流程中使用的所有LEADTOOLS都是全局的。

这对于调试或控制在LEADTOOLS中内部创建的图像的内存模型非常有用,例如,作为示例中描述的图像处理操作的结果。

返回值是用户之前设置的旧回调,如果之前没有设置回调,此方法将返回,这允许你级联回调在一起。

默认情况下,工具箱不设置回调,第一次调用此方法总是会返回

当你完成回调时,你可以用引用来阻止工具箱在创建时调用任何方法RasterImage对象。

例子

方法,下面的示例将展示如何使用SetRasterImageAllocateCallback方法来停止LEADTOOLS创建任何磁盘映像。的RotateCommand在本例中使用将在内部创建一个新的RasterImage对象。默认情况下,用户无法控制此图像的内存模型,但是,通过使用此回调,用户可以控制(和更改)所使用的内存模型。

c#
VB
使用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。NoDiskRasterMemoryFlags。NoTiled创建一个巨大的光栅图像使用img作为RasterImage =RasterImage(flags, 20000, 20000, 24, RasterByteOrder。Bgr RasterViewPerspective。TopLeft,没有什么,没有什么, 0)'将其旋转90度,这将有一个大于默认的内存大小'大小的常规内存,并导致LEADTOOLS切换到磁盘或平铺内存”模型。在下面的回调中,我们指示LEADTOOLS只使用常规内存,因此命令'将像预期的那样抛出内存不足异常。昏暗的cmd作为RotateCommandcmd。角度= 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。NoTiledRasterMemoryFlags。NoDisk如果你删除上面的代码,工具包很可能会切换到磁盘或平铺内存模式’而创造这样一个巨大的形象将会成功,然而,我们只想要传统'内存,内存溢出异常是预期的行为的例子让LEADTOOLS继续创建图像过程'您可以返回任何其他值来中止返回RasterExceptionCode。成功结束函数
需求

目标平台

Leadtools组装
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。