Andrewpeter Ответов: 1

Как загрузить изображение из стандартной DLL win32 в C#?


Всем привет,
Я создал стандартный файл dll win32 с некоторыми изображениями на C++. Теперь я должен загрузить изображение (которое имеет идентификатор) из этой библиотеки dll. Я хочу использовать функцию API для загрузки этого изображения и после отображения его на моем элементе управления PictureBox формы. Но я не знаю, как выбрать какую-либо функцию и использовать ее. Как мне это сделать? Надеюсь, вы мне поможете. Спасибо.

Что я уже пробовал:

Это мой код: Я использую
LoadBitmapA
функция.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Resources;
using System.Runtime.InteropServices;

namespace ImageDLLTest
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        private static extern IntPtr LoadBitmapA(IntPtr hinst, int iD);
        [DllImport("kernel32.dll")]
        private static extern IntPtr LoadLibraryA(string Libb);
        [DllImport("kernel32.dll")]
        private static extern IntPtr FreeLibrary(IntPtr hinst);

        public Form1()
        {
            InitializeComponent();
            IntPtr getLib = LoadLibraryA("xy.dll");
            this.BackgroundImage = (System.Drawing.Image)LoadBitmapA(getLib, 1);
            IntPtr freeLib = FreeLibrary(hinst);

            //MessageBox.Show(getLib.ToString());
        }
    }
}


Но не работать!

[no name]

"Я хочу использовать функцию API для загрузки", хорошо, поэтому прочитайте документацию для любого API, который вы выбрали для использования.

Andrewpeter

Я использую Loadbitmap () для загрузки изображения из dll, но это не работает. Я обновляю свой код выше. Надеюсь, вы мне поможете!

1 Ответов

Рейтинг:
1

KarstenK

Вы должны построить какой-то интерфейс с какой-то функциональностью.

Необходимые меры:

1. извлеките всю необходимую информацию из образа C++ в приложение C#.
2. Создайте подходящий байтовый буфер в C#
4. вызовите C++, чтобы заполнить байтовый буфер данными изображения
4. постройте растровое изображение

Тогда вы можете использовать это Конструктор растровых изображений чтобы построить свое растровое изображение.

О том, как написать интерфейс в вашей dll-Библиотеке, вы можете узнать из моей статьи Вызов Всех Станций.

Взлом будет заключаться в том, что dll записывает временный растровый файл, который загружает C#.


Andrewpeter

Я обновил свой код выше. Надеюсь, вы поможете мне полностью решить эту проблему! Спасибо.