Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/33: Рейтинг темы: голосов - 33, средняя оценка - 4.76
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99

compess images (Разработка программы)

20.04.2010, 12:53. Показов 6828. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток уважаемые программисты.
Я совсем недавно начал увлекаться программированием, и мне захотелось освоить Builder. Сейчас мне для себя хочется написать программу, которая будит способна изменять размерность фотографии, по указанным критериям.

все что я пока сделал, это примерно набросал, как хотелось бы видеть этот продукт


Сейчас я хочу организовать отображение изображений gif, jpg и bmp в ListView. Но открывается как-то не так как хотелось бы.
C++
1
2
3
4
5
6
7
8
9
10
11
    void __fastcall TForm1::Button3Click(TObject *Sender)
{
     FILE *FOpen;
 
    if( OpenDialog->Execute() )
    {
        FOpen = fopen(OpenDialog->FileName.c_str(), "r+");
                    }
                ListView1 -> AddItem(OpenDialog->FileName,NULL);
 
    fclose(FOpen);
я столкнулся с несколькими проблемами.
1) не могу добавить одновременно несколько файлов
2) отображается только путь файла


Помогите разобраться как сделать правильное отображение файла. Что б в таблице был виден тип файла и размер.
Миниатюры
compess images (Разработка программы)  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2010, 12:53
Ответы с готовыми решениями:

Как сохранить все превьюшки из google/images или yandex/images или gogo.ru/images
Мне требуется много маленьких картинок, которые можно взять на поиске по картинкам. Скажите пожалуйста, как это сделать? Если сохранять из...

Написание программы с использованием файловых переменных. Разработка программы для работы с текстовым файлом
Помогите пожалуйста : С помощью текстового редактора создать текстовый файл file1. Переписать строки файла file1 в новый текстовый файл...

Разработка программы на С#
Нужна помощь в написании программы на С#, программа не сложная(уровень - 1 курс ВУЗа). Цена договорная. Почта: ivan.bel@mail.ru

72
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 02:02  [ТС]
Студворк — интернет-сервис помощи студентам
спасибо, все предельно ясно)))
Я пытался так делать, незнал про этот Checked.

Добавлено через 2 часа 31 минуту
хочу при OnClick на ListView в компоненте Image отображалась картинка выбранного изображения

пробовал как-то так, но выбивает ошибку... кажется я тут что-то намудрил в условии.

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::ListView1Click(TObject *Sender)
{       int st;
         if (ListView1->Items->Item[st]->Checked) // выделеный элемент
                {
                  AnsiString path = OpenDialog->Files->Strings[st] ; // путь изображения
                  Image1->Picture->LoadFromFile(path); 
                }
}
и ещё как сделать так что бы картинка маштабировалсь в область Image1?
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
22.04.2010, 09:09
C++
1
2
3
4
5
void __fastcall TForm1::ListView1Click(TObject *Sender)
{      
                  AnsiString path = ListView1->Selected->SubItems[2];
                  Image1->Picture->LoadFromFile(path); 
}
Чтобы картинка в TImage отображалась в масштабе, нужно установить свойства
Stretch и Proportional в true;
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 13:44  [ТС]
C++
1
2
3
4
5
void __fastcall TForm1::ListView1Click(TObject *Sender)
{      
                  AnsiString path = ListView1->Selected->SubItems[2];
                  Image1->Picture->LoadFromFile(path); 
}
почему SubItems[2], программа ругается на это. как взять значения из нужной ячейки таблицы?
0
 Аватар для Morfiy
5 / 5 / 1
Регистрация: 16.04.2010
Сообщений: 64
22.04.2010, 13:54
Мож плз выложыть весь код проги я попробую повторить
А то я тож токо учусь
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 14:04  [ТС]
imcom.rar <-это исходник.

C++
1
AnsiString path = ListView1->Selected->SubItems[2];
пишет что
cannot 'AnsiString' to 'String'
0
 Аватар для Morfiy
5 / 5 / 1
Регистрация: 16.04.2010
Сообщений: 64
22.04.2010, 15:24
У мну такой вопрос а как зделать так чтоб в таблицы когда выделяеш 1 из записий не выдавало ошыбку
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
22.04.2010, 15:25
Эт точно и должен ругаться... SubItems это же TString... Поэтому нужно где-то так сделать...
И еще неплохо бы поставить ListView1->RowSelect = true;
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::ListView1Click(TObject *Sender)
{
   if(ListView1->Selected){
   AnsiString path = ListView1->Selected->SubItems->Strings[2]; 
   Image1->Picture->LoadFromFile(path);
   }
 
}
Или лучше открывать картинку в событии SelectItem...
C++
1
2
3
4
5
6
void __fastcall TForm1::ListView1SelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
        AnsiString path = Item->SubItems->Strings[2];
        Image1->Picture->LoadFromFile(path);
}
2
 Аватар для Morfiy
5 / 5 / 1
Регистрация: 16.04.2010
Сообщений: 64
22.04.2010, 16:03
что нужно дописать в функцыю удаления чтоб картинка очищалась од рисунка
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 19:52  [ТС]
uggway, спасибо, очень полезные оба примера)

Добавлено через 53 минуты
хочу создать кнопку "select all", что б при нажатии на неё во всех строках Listview1 CheckBox были отмечены?

C++
1
2
3
4
for (int i = 0; i < ListView1->Items->Count; i++)
        {
               ListView1->Items->Item[i]->Checked;
        }
пробывал так, но ничего не происходит(

Добавлено через 17 минут
C++
1
   ListView1->Items->Item[i]->Checked = true;
все савсем просто оказалось)))
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 21:18  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Morfiy Посмотреть сообщение
что нужно дописать в функцыю удаления чтоб картинка очищалась од рисунка
C++
1
2
3
4
if(ListView1->Selected){
        AnsiString path = Item->SubItems->Strings[2];
        Image1->Picture->LoadFromFile(path);
      }  else Image1->Picture = NULL;  // ничего не показывай
это поможет отчистить image1 от изоброжения которое уже не выделено.

Добавлено через 47 минут
хочу создать кнопку, что б при нажатии на неё появлялся SaveDialog и я мог указать папку в которую хочу сохронить сконвертирование изоброжения. путь этой папки должен отоброжатся в MaskEdit1

помогиет!
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
22.04.2010, 21:45
C++
1
2
3
4
5
6
7
8
9
    SaveDlg->InitialDir = ...;
    SaveDlg->FileName = ...;
    SaveDlg->Filter = "Изображения(*.jpg)|*.jpg";
    SaveDlg->Title = ...;
    SaveDlg->DefaultExt = "jpg";
    if (SaveDlg->Execute())
    {
        ....
    }
Цитата Сообщение от HollywooD-new Посмотреть сообщение
должен отоброжатся в MaskEdit1
зачем MaskEdit?

p.s. не "сконвертированное" а смаштабированное, соответственно не "compress" а "resize"
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 23:30  [ТС]
Цитата Сообщение от Roma_F Посмотреть сообщение
зачем MaskEdit?
MaskEdit для того чтоб была возможность пописывать путь вручную или пользоваться Ctrl+V.
или так не делают? я не знаю)))
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
22.04.2010, 23:58  [ТС]
У меня получилось что в MaskEdit пишет имя самого файла. а мне надо выбирать всего лишь папку в которую будит производится копирование(сохранение) файлов

C++
1
2
3
4
5
if (SaveDialog->Execute())
        for (int i=0; i<OpenDialog->Files->Count; i++)
        { AnsiString path = SaveDialog->Files->Strings[i]  ;
         MaskEdit1->Text = path ;
        }
и ещё, что конкретно делает
SaveDlg->InitialDir = ...; и SaveDlg->DefaultExt = "jpg"; ?
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
23.04.2010, 09:15
Цитата Сообщение от HollywooD-new Посмотреть сообщение
MaskEdit для того чтоб была возможность пописывать путь вручную или пользоваться Ctrl+V.
А чем не устраивает обычный Edit

Цитата Сообщение от HollywooD-new Посмотреть сообщение
надо выбирать всего лишь папку
ExtractFileDir

Цитата Сообщение от HollywooD-new Посмотреть сообщение
SaveDlg->InitialDir
стартовая папка для диалога

Цитата Сообщение от HollywooD-new Посмотреть сообщение
SaveDlg->DefaultExt
если написать только имя - SaveDialog сам добавит разрешение, иначе получится файл без разрешения
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
23.04.2010, 13:20  [ТС]
Цитата Сообщение от Roma_F Посмотреть сообщение
А чем не устраивает обычный Edit
просто взгляд умал на MaskEdit (поменял не Edit)

Цитата Сообщение от Roma_F Посмотреть сообщение
ExtractFileDir
получилось примерно так
C++
1
2
3
4
if (SaveDialog->Execute())
       {  AnsiString path = SaveDialog->Files->Text  ;
         Edit1->Text = ExtractFileDir(path);
        }
Но у меня ворос я указал FileName = '...' это никак не повлияет на именя файлов которые я буду сохронять? я ведь буду использовать только путь из Edit1 и именя открытых файлов из ExtractFileName(path).

A если у меня будут форматы .gif и .bmp, а в SaveDlg->DefaultExt = ".jpg", SaveDialog просто поменяет их раздешения?
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
23.04.2010, 15:32  [ТС]
Хочу что б значения CSpinEdit1 и CSpinEdit2 изменялись прапорционально если у нас отмечен RadioButton1 (percentage) и стоит галочка CheckBox1(Save proportional)
C++
1
2
if (CheckBox1->Checked == true && RadioButton1->Checked == true)
    { CSpinEdit2->Value = CSpinEdit1->Value;  }
программа компилирует, но значения CSpinEdit's не меняются одновременно(
0
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
23.04.2010, 15:43  [ТС]
выкрутился таким способом:
C++
1
2
3
4
5
6
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
   if (CheckBox1->Checked == true && RadioButton1->Checked == true)
    { CSpinEdit2->Visible = false ;
      StaticText2->Visible = false;}
}
но это не решит проблему когда нужно будит сохронять пропорции в pixels
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
23.04.2010, 16:03


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::CSpinEdit2Change(TObject *Sender)
{
    if(CheckBox1->Checked && RadioButton1->Checked){
    CSpinEdit1->Value = CSpinEdit2->Value;
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
     if(CheckBox1->Checked && RadioButton1->Checked){
    CSpinEdit2->Value = CSpinEdit1->Value;
    }
}
//---------------------------------------------------------------------------
1
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
23.04.2010, 18:09
Цитата Сообщение от HollywooD-new Посмотреть сообщение
я указал FileName = '...' это никак не повлияет на именя файлов которые я буду сохронять
он просто предложит это имя по умолчанию, можно это свойство не трогать

Цитата Сообщение от HollywooD-new Посмотреть сообщение
A если у меня будут форматы .gif и .bmp, а в SaveDlg->DefaultExt = ".jpg", SaveDialog просто поменяет их раздешения?
C++
1
 SaveDlg->Filter = "Изображения (JPEG, GIF, BMP)|*.jpg;*.jpeg;*.gif;*.bmp";
кстати это это задаётся и в самом билдере
1
0 / 0 / 3
Регистрация: 12.04.2010
Сообщений: 99
23.04.2010, 19:08  [ТС]
uggway, спасибо очень пригодится)))
для процентов решил оставить так
C++
1
2
3
4
5
6
7
8
 void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
   if (CheckBox1->Checked == true && RadioButton1->Checked == true)
        { CSpinEdit2->Visible = false ;     StaticText2->Visible = false;
          StaticText1->Caption = "Proportion"; } 
   else {CSpinEdit2->Visible = true ;     StaticText2->Visible = true;
         StaticText1->Caption = "Height";}
} //оставляет один CSpinEdit.
Добавлено через 55 минут
Приступаю к последнему этапу. Теперь мою программку надо научить брать по очереди файлы Select из ListView1 и конвертирует изображения по указанным параметрам CSpinEdit1 и CSpinEdit1 в место указанное в Edit1
Какие может быть дополнительные компоненты или методы мне понадобятся в этом случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2010, 19:08

Разработка программы
Напишите модуль включающий процедуру CallMe и функцию CallCount. Первая выводит на дисплей сообщение, переданное в качестве параметра, а...

Разработка программы!!
Сделайте программу органайзер ну или адресная книга с помощью С#!!

Разработка программы
Здравствуйте, пишу легкую игру и все время сталкиваюсь с тем, что сбиваюсь с &quot;маршрута&quot; данной программы. Например, делаю кнопку не...

Разработка программы..
Здравствуйте, нужна помощь в написание программы, реализ. обработку числового двумерного массива методом поиска;( Спасибо.

Разработка программы
Разработать программу для задания: найти сумму положительных элементов квадратной матрицы (10*10). Подскажите, что-то никак не выходит.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru