كيفية الحصول على DIB مطبق في مكتبة C++/COM في عميل .NET باستخدام كائن COM هذا

StackOverflow https://stackoverflow.com/questions/265967

  •  06-07-2019
  •  | 
  •  

سؤال

لدينا كائن COM تم تطبيقه باستخدام C++/ATL يتضمن أسلوبًا سيُرجع DIB.نقوم أيضًا بكتابة تطبيق .NET الذي سيستخدم كائن COM هذا.وبما أننا نكتب كليهما، لدينا الحرية في تحديد أفضل طريقة لإرجاع DIB هذا من كائن COM.للتوضيح، هل سيكون من الأفضل إرجاع مؤشر Windows الأصلي إلى DIB أو صفيف بايت أم أن هناك طريقة أخرى لنقل Windows DIB بسهولة إلى كائن صورة .NET؟وفيما يتعلق بهذا السؤال:بمجرد إرجاع DIB هذا، كيف يمكنني إدخاله في كائن صورة .NET؟

هل كانت مفيدة؟

المحلول

يحتوي COM/OLE على واجهة قياسية لتمثيل الصور الرسومية تسمى الصورة (ونسخته الصديقة للبرمجة النصية IPictureDisp).

يوفر COM تطبيقًا لهذه الواجهات لك.يمكنك الحصول عليه لبناء واحد لك عن طريق الاتصال OleCreatePictureIndirect().عليك فقط تسليمها أ هيكل بيكتدسك مع الرسم الذي لديك، ويعطيك واجهة.يجب أن تكون قادرًا على إعادة هذه الواجهة إلى برنامج الاتصال.سيؤدي هذا أيضًا إلى جعل الكائن الخاص بك متوافقًا مع عملاء COM الآخرين مثل VB6.

بالعودة إلى .NETland، يمكنك تحويل IPicture إلى صورة باستخدام Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage().

نصائح أخرى

وإلقاء نظرة على هذه المادة بنك دبي الإسلامي إلى System.Bitmap على CodeProject. لديها رمز للتحويل من بنك دبي الإسلامي إلى صورة نقطية. والفكرة هي أن بنك دبي الإسلامي ويمثل استخدام IntPtr.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top