من الممكن الحصول على مجموعة INTPTR من مجموعة INT []؟
سؤال
تحيات.
في C #: إذا كان لدي مجموعة int [] أعلن مثل هذا
int[] array = new array[size];
هناك طريقة للحصول على INTPTR من هذه الصفيف؟
الشيء هو أن أستخدم إطار EMGUCV، وهناك منشئ لإنشاء صورة تأخذ IntPTR إلى بيانات البكسل، من أجل إنشاء صورة من صفيف (INT []).
Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");
بالمناسبة إذا كان شخص ما قد أخبرني كيف لحساب الخطوة، سيكون ذلك رائعا.
المحلول
يجب أن تكون قادرا على القيام بذلك دون رمز غير آمن باستخدام GCHandle
. وبعد هنا عينة:
GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
if (handle.IsAllocated)
{
handle.Free();
}
}
نصائح أخرى
استخدم رمز غير آمن، مثل هذا:
unsafe
{
fixed (int* pArray = array)
{
IntPtr intPtr = new IntPtr((void *) pArray);
}
}
لا تنتمي إلى StackOverflow