(保龄球)setUserData:(nullable无符号字符*)用户数据
userDataSize:(无符号长)userDataSize
错误:错误(NSError * *)
公共无效setUserData (
字节[]的数据,
长大小
)
数据
指针指向包含图像的非托管内存缓冲区新数据。
大小
在的字节数数据。
您指定的数据不会被复制,而是将引用的图像到图像的处理,或直到你再次调用这个方法。
建立一个RasterImage对象与非托管用户数据,调用/ #男星构造函数传递RasterMemoryFlags.User到旗帜参数。
一些图像处理命令,如RotateCommand和ColorResolutionCommand,需要重新分配图像数据的。如果你创建一个图像RasterMemoryFlags.User,并将其传递给这些命令,他们将改变形象RasterMemoryFlags.Conventional和重新分配内存。你的原始记忆不再被使用。
这个示例使用GetPixelData和SetPixelData方法来交换特定像素的R, G值。
使用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 ()
结束子
公共NotInheritable类LEAD_VARS
公共常量ImagesDir作为字符串=“C: \ LEADTOOLS21 \ Resources \图片”
结束类
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。