2013-09-16 2 views
1

Я разрабатываю приложение winform. Он имеет ссылку на библиотеку dll. Я хочу использовать функцию «PDFImage» в этой библиотеке. Эта функция используется для размещения изображений в PDF-документе. Функция «PDFimage» имеет аргумент «FileName» типа String, который принимает местоположение файла изображения.Использование изображения в папке ресурса в функции, которая принимает путь к файлу в качестве параметра

Теперь я должен поместить изображение как отдельный файл с файлом .exe, созданным после создания проекта. Мне это не удобно. Теперь я упоминаю имя файла изображения как параметр функции, например «Flower.jpg». И я сохранил изображение в папке \ bin \ debug. Я не хочу делать это так, так как для этого нужно, чтобы файл изображения размещался отдельно с исполняемым файлом.

То, что я пытаюсь сделать, это следующее: Я добавил файлы изображений в папку «Ресурсы» как существующий элемент. Теперь, чтобы вызвать функцию PDFImage, мне нужно передать имя файла в качестве аргумента. Как я могу это сделать?

У меня есть исходный код dll со мной. Лучше ли изменять исходный код по мере необходимости и создавать еще одну dll, а не то, что я делаю сейчас?

+0

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

+0

@Foreever Вы не можете передать ресурс изображения в качестве пути к файлу, оба отличаются в типах. Ресурс изображения имеет тип «Image», а 'filename' - тип' string'. Если возможно попытаться изменить параметр функции и сделать так, как 'SomeFunction (Image image)' т.е. изменить строковый аргумент на 'Image', а затем вы можете использовать Image Resource в качестве параметра функции. – PurpleXenon

+0

@ Ek0nomik Я не разделяю никакого кода, потому что ничего не сделал. Я не знаю, с чего начать. Я сохраняю то же самое в папке. Но не нужно ли держать папку вне приложения во время работы. Как я уже упоминал, я могу передать только местоположение файла изображения в функцию. Я считаю, что невозможно передать местоположение файла изображения в папке ресурса. Встраивает ли это изображение какое-либо хорошее? – Foreever

ответ

1

Посмотрите, если это поможет;

string apppath = Application.StartupPath; 
    string resname = @"\Resource.bmp"; 
    string localfile = ""; 
    localfile = apppath + resname;//Create the path to this executable. 
    //Btw we are going to use the "Save" method of Bitmap class.It 
    //takes an absolute path as input and saves the file there. 

    //We accesed the Image resource through Properties.Resources.Settings and called Save method 
    //of Bitmap class.This saves the resource as a local file in the same folder as this executable. 
    Properties.Resources.Image.Save(localfile); 

    MessageBox.Show("The path to the local file is : " + Environment.NewLine + localfile + Environment.NewLine + 
    "Go and check the folder where this executable is.", 
    this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); 


    //localfile is the path you need to pass to some function like this; 
    //SomeClass.Somefunction(localfile); 

Надеется, что это помогает и here образец, если вам нужно.

+0

Я вижу в вашем примере проекта вы добавили изображение просто, а не как встроенный. Я также добавил изображение как существующий элемент и не сделал его встроенным ресурсом. Но файл не указан в свойствах. Что я должен установить для сборки для этого файла? – Foreever

+0

Я сам нашел ответ [здесь] (http://stackoverflow.com/questions/90697/how-to-create-and-use-resources-in-net) – Foreever

1

Все, что вы можете сделать, это получить ресурс, сохранить его в файл (временный может быть), а затем передать имя файла функции. Большинство функций, которые берут файл в .net, также берут поток, поэтому, если у вас есть контроль над обеими сторонами, я бы сделал это, а затем вам не нужно было обходить файловую систему.

Смежные вопросы