mastersoftna
@mastersoftna

Передача HBitmap из Delphi dll в приложение на C#?

Приветствую всех. Проблема следующая.

Необходимо передать в dll на Delphi путь к файлу, dll должна нарисовать bitmap из этого файла и передать HBitmap в приложение на C#. В dll есть TImage, рисую на нем и передаю TImage.Picture.Bitmap.Handle. В принимающем приложении отрисовываю изображение по HBitmap. Но оно не рисуется, мой pictureBox.Image заливается просто белым фоном, но если перед рисованием и передачей handle в dll поставить ShowMessage или показать модальную форму все нормально отрисовывается. В чем проблема?


Пробовал передавать указатель на первый байт изображения в памяти и размер изображения. Тоже самое.


И подскажите можно как то изменить следующий код, что бы не собирать массив бай по байтам, а сразу его получить.

byte dd;<br/>
 byte* ddd = &dd;<br/>
 ddd = (byte*)LibWrap.TRGOpen(&quot;D:\\111.trg&quot;, ref size);<br/>
 byte[] img = new byte[size];<br/>
 for (int i = 0; i &lt; size; i++)<br/>
 {<br/>
 byte t = *(ddd + i);<br/>
 img[i] = t;<br/>
 }<br/>



Вызов dll:
public unsafe class LibWrap<br/>
 {<br/>
 [DllImport(&quot;TRGA.dll&quot;)]<br/>
 public static extern void* TRGOpen([MarshalAs(UnmanagedType.LPStr)] string str, ref int size);<br/>
 }
  • Вопрос задан
  • 2957 просмотров
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Если вы делаете последовательно передачу в dll пути, отрисовку и передачу хендлера обратно, то возможно библиотека просто еще не успела загрузить и отрисовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы