公共静态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作为新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。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点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。
