Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 21:21   #11
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Для этого используется компонент TSaveDialog.
на Button->Click
Код:
if (SaveDialog1->Execute) {
  SaveDialog1->FileName = <название файла>;
  Image1->Picture->SaveToFile(SaveDialog1->FileName);
}
На OnCreate в Form можно прописать
Код:
SaveDialog1->Filter = "Bitmap (*.bmp)|*.BMP";

Последний раз редактировалось Drugnir; 27.03.2012 в 21:29.
Drugnir вне форума Ответить с цитированием
Старый 27.03.2012, 21:45   #12
PruSLas
Пользователь
 
Регистрация: 27.03.2012
Сообщений: 14
По умолчанию

А TSavePictureDialog может больше подходит для этого? Хотя ж не важно...
Теперь осталось собрать все воедино А сравнение картинок наверно не буду делать - проще по-моему "если есть на TImage изображение - сохранить его и очистить TImage. И т.д."

Последний раз редактировалось PruSLas; 27.03.2012 в 21:50.
PruSLas вне форума Ответить с цитированием
Старый 27.03.2012, 21:51   #13
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Так будут доступны только Bitmap, а SavePictureDialog предлагает полный набор фильтров по изображениям. Т.е. там всего лишь набор форматов полный, а так это одно и то же.
Drugnir вне форума Ответить с цитированием
Старый 28.03.2012, 01:37   #14
PruSLas
Пользователь
 
Регистрация: 27.03.2012
Сообщений: 14
По умолчанию

Черт, не получается корректно очистить TImage. Поставил действие на таймер - каждую секунду проверяет TImage = NULL. Если там что-то есть - сохраняет скриншот. Проблема в том, что если там ничего нет - все равно появляется файл, весящий 0 байт. Вот код:
Цитата:
if (Image1->Picture->Bitmap != NULL) {
Image1->Picture->SaveToFile(TDateTime::CurrentDateT ime().FormatString("dd.MM.yyyy HH-mm-ss") + ".bmp");
Image1->Picture->Bitmap = NULL; }
Добавление строки Image1->Picture->Bitmap->Free(); результата не изменяет...Я конечно понимаю что проблема между стулом и монитором сидит, но все же надеюсь на помощь
PruSLas вне форума Ответить с цитированием
Старый 28.03.2012, 17:05   #15
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Код:
Image1->Picture->Bitmap->FreeImage();
Image1->Picture->Bitmap = NULL;
или
Код:
Image1->Picture->Assign( NULL );
или
Код:
Image1->Picture = NULL;
Это очистит Image1. При создании формы это вставь и после каждого сохранения файла.

Последний раз редактировалось Drugnir; 28.03.2012 в 17:10.
Drugnir вне форума Ответить с цитированием
Старый 28.03.2012, 17:37   #16
PruSLas
Пользователь
 
Регистрация: 27.03.2012
Сообщений: 14
По умолчанию

Неа Все равно продолжает усердно создавать файлы по 0 байт. Может легче как-то по-другому реализовать данный механизм (если есть картинка на TImage - сохранить на хард, если нет - ничего не делать). Событие завязано на таймер, опрашивает каждые 5 секунд...
PruSLas вне форума Ответить с цитированием
Старый 28.03.2012, 18:36   #17
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Можно проверять пиксели
Код:
TColor cl;
cl = Image1->Picture->Bitmap->Canvas->Pixels[0][0];
Проверку в цикле по всем пикселям, если нашли отличный от cl, то это картинка, иначе Image пустой.
А в if проверка была Image1->Picture != NULL?
Drugnir вне форума Ответить с цитированием
Старый 28.03.2012, 19:33   #18
PruSLas
Пользователь
 
Регистрация: 27.03.2012
Сообщений: 14
По умолчанию

Да, проверка на Picture != NULL стоит. Здесь что ли ошибка?
PruSLas вне форума Ответить с цитированием
Старый 28.03.2012, 19:37   #19
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Код:
if (!Image1->Picture->Graphic->Empty)
Вот так еще можно.
Drugnir вне форума Ответить с цитированием
Старый 28.03.2012, 19:58   #20
PruSLas
Пользователь
 
Регистрация: 27.03.2012
Сообщений: 14
По умолчанию


с этим кодом при значении False в (if (!Image1->Picture->Graphic->Empty)) выдает эту ошибку...
PruSLas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение картинки Mihanches Общие вопросы Delphi 2 27.10.2010 03:10
Автоматическое сохранение - имя файла garik64 Microsoft Office Word 3 22.02.2010 02:34
Автоматическое сохранение даты Nomiko БД в Delphi 3 21.05.2009 18:21
Автоматическое сохранение листа в файл Csv flylive Microsoft Office Excel 13 02.04.2009 10:50
Автоматическое сохранение AndreichSB Microsoft Office Access 1 03.01.2007 23:15