←选择平台

SetUserData方法

总结
图像的数据设置为指定的非托管内存缓冲区。
语法
c#
VB
objective - c
c++
Java
公共无效SetUserData (IntPtr数据,大小)
公共SetUserData (_按值传递数据作为IntPtr, _按值传递大小作为_)
(保龄球)setUserData:(nullable无符号字符*)用户数据userDataSize:(无符号)userDataSize错误:错误(NSError * *)
公共无效setUserData (字节[]的数据,大小)
公共:无效SetUserData (IntPtr数据,int64大小)

参数

数据
指针指向包含图像的非托管内存缓冲区新数据。

大小
在的字节数数据

讲话

您指定的数据不会被复制,而是将引用的图像到图像的处理,或直到你再次调用这个方法。

建立一个RasterImage对象与非托管用户数据,调用/ #男星构造函数传递RasterMemoryFlags.User旗帜参数。

一些图像处理命令,如RotateCommandColorResolutionCommand,需要重新分配图像数据的。如果你创建一个图像RasterMemoryFlags.User,并将其传递给这些命令,他们将改变形象RasterMemoryFlags.Conventional和重新分配内存。你的原始记忆不再被使用。

你是负责管理图像数据。处理不会免费数据

例子

这个示例使用GetPixelData和SetPixelData方法来交换特定像素的R, G值。

c#
VB
使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ImageProcessing;使用Leadtools.ImageProcessing.Core;使用Leadtools.ImageProcessing.Color;使用Leadtools.Dicom;使用Leadtools.Drawing;使用Leadtools.Controls;使用Leadtools.Svg;公共无效SetUserDataExample (){RasterCodecs编解码器=RasterCodecs ();字符串destFileName = Path.Combine (LEAD_VARS.ImagesDir,“UserData.bmp”);/ /使用用户定义的数据创建一个图像int宽度= 40;int身高= 40;intbitsPerPixel = 24;int大小=宽*高* 3;IntPtr data1 = Marshal.AllocHGlobal(大小);/ /加载图像RasterImage图像=RasterImage (RasterMemoryFlags.User,宽度,高度,bitsPerPixel,RasterByteOrder.Bgr,RasterViewPerspective.TopLeft,,IntPtr.Zero,0);/ /得到一个指针的内部数据,填充灰色色调dataSize = image.DataSize;字节[]缓冲=字节[dataSize];bool公司=真正的;字节值= 0;(int我= 0;我< buffer.Length;我+ = 3){缓冲(+ 0)=价值;缓冲(i + 1) =价值;缓冲[i + 2] =价值;如果(公司){如果(值= = 255){公司=;值= 254;}其他的值+ +;}其他的{如果(值= = 0){公司=真正的;值= 1;}其他的价值——;}}/ /这个缓冲区复制到图像数据元帅。复制(缓冲区,0,data1、buffer.Length);/ /设置用户数据的形象。SetUserData (data1、dataSize);/ /保存图片编解码器。保存(图像、destFileName RasterImageFormat。Bmp、24);image.Dispose ();Marshal.FreeHGlobal (data1);codecs.Dispose ();}静态LEAD_VARS{公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”;}
进口Leadtools进口Leadtools.Codecs进口Leadtools.ImageProcessing进口Leadtools.ImageProcessing.Core进口Leadtools.ImageProcessing.Color进口Leadtools.Controls进口Leadtools.Dicom进口Leadtools.Drawing进口Leadtools.Svg公共SetUserDataExample ()昏暗的编解码器作为RasterCodecs =RasterCodecs ()昏暗的destFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“UserData.bmp”)“与用户定义的数据创建一个图像昏暗的宽度作为整数= 40昏暗的高度作为整数= 40昏暗的bitsPerPixel作为整数= 24昏暗的大小作为整数=宽*高* 3昏暗的data1作为IntPtr = Marshal.AllocHGlobal(大小)“加载图片昏暗的图像作为RasterImage =RasterImage (RasterMemoryFlags。用户,宽度,高度,bitsPerPixel RasterByteOrder.Bgr,RasterViewPerspective.TopLeft,没有什么,IntPtr。0,0)得到一个指针指向内部数据和填充灰色色调昏暗的dataSize作为整数=CInt(image.DataSize)昏暗的缓冲作为字节()=字节(dataSize - 1) {}昏暗的公司作为布尔=真正的昏暗的价值作为字节= 0昏暗的作为整数= 0我< buffer.Length缓冲(i + 0) =价值缓冲(i + 1) =价值缓冲(+ 2)=价值如果公司然后如果值= 255然后公司=值= 254其他的价值=价值+ Convert.ToByte (1)结束如果其他的如果值= 0然后公司=真正的值= 1其他的价值=价值——Convert.ToByte (1)结束如果结束如果我+ = 3循环这个缓冲区复制到图像数据元帅。复制(缓冲区,0,data1、buffer.Length)“设置用户数据的形象。SetUserData (data1 dataSize)“保存图像编解码器。保存(图像、destFileName RasterImageFormat。Bmp, 24)image.Dispose ()Marshal.FreeHGlobal (data1)codecs.Dispose ()结束公共NotInheritableLEAD_VARS公共常量ImagesDir作为字符串=“C: \ LEADTOOLS21 \ Resources \图片”结束
需求

目标平台

另请参阅

参考

RasterImage类

RasterImage成员

Leadtools组装
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。