Войти

Показать полную графическую версию : Выбор изображения, отображения его в окне программы и сохранение пути к нему.


Virtyaluk
25-01-2010, 18:10
Помогите, пожалуйста
нужно создать окно программы, чтоб на нем была возможность, через кнопочку "Обзор", выбрать изображения(*.png, *.jpg, *.gif, *.bmp)
и сохранить этот путь в файл patch.ini лежащий в той же директории, что и сама программа.
+ желательно над кнопочкой "Обзор" форму для пред-осмотра(preview) выбранного изображения.
Помогите осуществить!

Drongo
25-01-2010, 18:31
и сохранить этот путь в файл patch.ini лежащий в той же директории, что и сама программа. »
#include <inifiles.hpp>
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Path = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", Path);
}

нужно создать окно программы, чтоб на нем была возможность, через кнопочку "Обзор", выбрать изображения(*.png, *.jpg, *.gif, *.bmp) »На вкладке Dialogs(Диалоги) выбрать и кинуть на форму компонент OpenPictureDialog

В нужный обработчик который открывает это диалоговое окно вписать
if(OpenPictureDialog1->Execute())
OpenPictureDialog1->Execute();

Virtyaluk
25-01-2010, 18:45
Drongo,
при добавлении в кнопку строчек:

String Path = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", Path);

Кнопка Обзор не реагирует на действия пользователя т.е не открываться окно выбора изображения.
-*---*-
На вкладке Dialogs у меня нет OpenPictureDialog, есть TOpenPictureDialog.
Я перетаскиваю его, на окно моей программы, потом 2 разы щелкаю по созданной форме(чтоб перейти до редактирования кода в новой области),
а оно открывает "Проводник" для выбора картинки.Непонятно как-то.
-*---*-
Подскажите что делать?
или если вам не сложно, напишите готовый код всей программы для выполнения требуемых задач.

Drongo
25-01-2010, 19:24
есть TOpenPictureDialog »Это он и есть. Щёлкать по нему не нужно, у вас же за открытие диалогового окна отвечает кнопка Обзор... вот по ней щёлкайте, и в обработчике OnClick.

Готовый код для выполнения требуемых задач. Нужны компоненты Button, Image.
#include <inifiles.hpp>
...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute()){
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
String PathDirectory = ExtractFileDir(OpenPictureDialog1->FileName);
String PathEXE = ExtractFilePath(Application->ExeName);
TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"patch.ini");
Ini->WriteString("PATH", "Directory", PathDirectory);
}
}

Virtyaluk
25-01-2010, 19:35
Drongo,
Button это кнопка, а Image это TOpenPictureDialog???
-*---*-
При добавлении строки:

#include <inifiles.hpp>

в основной код, приложение вообще не запускается, а при компиляции выдает ошибки:
"E2451 Undefined symbol 'OpenPictureDialog1'"
"E2451 Undefined symbol 'Image1'"

как это понимать??

Drongo
25-01-2010, 19:52
а Image это TOpenPictureDialog??? »Нет, Image это Image. Находится на вкладке Additional - компонент TImage

#include <inifiles.hpp> »Это ж заголовочный файл, его нужно вверх, там где все #include стоят.

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "MyRunProgram.h"
#include <inifiles.hpp> // Например сюда...
#include <FileCtrl.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
...

Virtyaluk
25-01-2010, 22:17
Drongo,
работает :)

но вот очередная проблема(ы):

-при открытии "Проводника" для выбора изображений
из перечисленных, нужных мне форматов присутствует только *.bmp.Зато есть ненужные мне *.ico и другие.
Как мне дописать нужные мне форматы и удалить не нужные??

-перетащил я Image куда нужно, работает все нормально т.е. при выборе картинки в "Проводнике" она отображается в этой форме.Но проблема в том что если картинка большая(например, 1280х1024 пикселей)
то только ее часть отображается в форме Image.
Как исправить эту нелепость т.е. чтоб в заданной форме отображался весь рисунок??

-и не сохранился путь к картинке в ini-файл.
или эта функция при обычном(не откомпилированном) запуске не работает, надо только компилировать??

Drongo
26-01-2010, 12:46
Как мне дописать нужные мне форматы и удалить не нужные?? »Задачи себе такой не ставил, поэтому выводить рисунок в формате .jpg, .jpeg не умею. Дописать можно открыв фильтр и вписав необходимые расширения, но указаные форматы файлов присутствуют в фильтре, нужен код которы будет загружать и отображать файлы .jpg, и т.д.

http://s001.radikal.ru/i195/1001/99/0318fd0497a4.png

Как исправить эту нелепость т.е. чтоб в заданной форме отображался весь рисунок?? »Установить в свойствах компонента Image значения true в параметре AutoSize и Center. Смотрите скриншот.

http://s001.radikal.ru/i194/1001/7c/f50863bf5222.png

-и не сохранился путь к картинке в ini-файл.
или эта функция при обычном(не откомпилированном) запуске не работает, надо только компилировать?? »Надо выбрать необходимый файл, ведь как иначе программа узнает при запуске, путь к нужному вам файлу?

Drongo
26-01-2010, 18:26
при открытии "Проводника" для выбора изображений
из перечисленных, нужных мне форматов присутствует только *.bmp.Зато есть ненужные мне *.ico и другие.
Как мне дописать нужные мне форматы и удалить не нужные?? »Добавь к #include <inifiles.hpp> строку
#include <inifiles.hpp>
#include <jpeg.hpp> // Эту строку

Virtyaluk
27-01-2010, 03:20
Добавь к #include <inifiles.hpp> строку »
и допустим для *.png формата нада добавить это - #include <png.hpP> ??
А как удалить *.ico и другие не нужные форматы?

Drongo
27-01-2010, 13:39
и допустим для *.png формата нада добавить это - #include <png.hpP> ?? »Такого вроде бы нет. Для .png не знаю.

А как удалить *.ico и другие не нужные форматы? »Так же как и добавляете, только наоборот. Вам нужно удалить ненужное расширение. коммент 8 (http://www.forum.oszone.net/post-1330213-8.html) Есть такие
*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmfДопустим не нужно - .ico удаляете в строке *.ico;

Virtyaluk
27-01-2010, 14:32
Drongo,
Странно, не заметил этой информации в том посте.
Но все равно спасибо.
Сейчас попробую, отпишу что вышло.




© OSzone.net 2001-2012