Я зарегистрировал класс COM и интерфейс, написанный на .NET 2.0.Теперь я ищу способ передать объект Bitmap из приложения WindowsForms .Net 4.5 в компонент COM.
Когда я пытаюсь сделать этот код:
Type type = Type.GetTypeFromCLSID(clsid);
source = (IBaseFilter) Activator.CreateInstance(type);
public void SetBitmap(Bitmap input)
{
IImageSourceFilter advSource = (IImageSourceFilter)source;
advSource.SetBitmapObj(input);
}
Я получаю следующее исключение
System.InvalidCastException
HResult=0x80004002
Message=Unable to cast COM object of type 'System.__ComObject' to class type 'System.Drawing.Bitmap'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
Source=DShow
StackTrace:
at RTSPTestAPP.Camera.BMPtoCam.IImageSourceFilter.SetBitmapObj(Object inp)
at RTSPTestAPP.Camera.BMPtoCam.SetBitmap(Bitmap input) in C:\Users\...\BMPtoCam.cs:line 43
Передача его в виде байтового массива неэффективна и находит много ресурсов ЦП (и я посылаю много битовых карт из декодированного видеопотока).