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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2009, 17:45   #1
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию Как сохранить нарисованный график в JPG файл

Короче.

Рисую из вычисленных данных простой график. Хочется сохранить в последствии в JPG файл.

Поставил компонент PaintBox - дык вот в нём мои прямоугольнички не хотят закрашиваться нужным цветом.

Делал такую проверку

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color:=clRed;
Canvas.Brush.Style:=bsSolid;
PaintBox.Canvas.Rectangle(0,0,10,10 );
end;

При этом - квадратик появляется белый (чтоб его)

а при таком раскладе

procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color:=clRed;
Canvas.Brush.Style:=bsSolid;
Canvas.Rectangle(0,0,10,10);
end;

На самой форме приятный красный квадрат появляется.

Вопрос такой как мне добиться цвета на компоненте...либо подскажите - каким более удобным способом можно нарисовать и сохранить мой график.

ЗЫ: Ещё один вопрос:
PaintBox.Canvas.Rectangle(любое внутри,любое внутри,любое внутри,Paintbox.Height);
У меня не прорисовывается нижняя граница прямоугольника - даже когда я отнимаю от последнего параметра 100!!! прямоугольник всёравно рисуется до нижней границы. В чём проблема?

ЗЗЫ: Я извинияюсь, если моя тема повторяет уже существующие - вроде поиском поигрался - ничего такого не нашёл.
Ark вне форума Ответить с цитированием
Старый 27.03.2009, 18:22   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Ну во-первых почему ты рисуешь в событии "FormPaint"..? Сделай кнопку и рисуй при нажатии на неё...
А во-вторых у "Form1.Canvas" и "PaintBox.Canvas" собственные настройки...
Ты выставил настройки "Brush.Color" и "Brush.Style" для "Form1.Canvas", а у "PaintBox.Canvas" они остались как были...

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
PaintBox.Canvas.Brush.Color:=clRed;
PaintBox.Canvas.Brush.Style:=bsSolid;
PaintBox.Canvas.Rectangle(0,0,10,10);
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 27.03.2009, 19:03   #3
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

Спасибо большое =)

А сохранить в файл из PaintBox можно?

Надо ли вводить BitMap: TBitmap ?

ЗЫ: В прорисовке окна я поставил, чтобы при сворачивании или перекрытии информация никуда не делась. На самом деле я ввёл глобальную константу, и при конце расчётов она открывает своим значением в процедуре перерисовки через if con=1 then собственно прорисовку самого графика =)))

Последний раз редактировалось Ark; 27.03.2009 в 19:05.
Ark вне форума Ответить с цитированием
Старый 27.03.2009, 19:07   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
чтобы при сворачивании или перекрытии информация никуда не делась
Я обычно рисую в простом TImage и нарисованное на нём при перекрытии никуда не девается...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 27.03.2009, 21:45   #5
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

Благодарствую =)

С TImage - всё стало значительно проще. Надо только один раз прорисовать =)

А как сохранить картинку из TImage в файл?

Я так понимаю нужно вставить диалог сохранения файла. Нужно ли создавать TBitmap? Не подскажешь?
Ark вне форума Ответить с цитированием
Старый 27.03.2009, 21:53   #6
]Wowan[
Delphi forever
Форумчанин
 
Аватар для ]Wowan[
 
Регистрация: 13.01.2009
Сообщений: 113
По умолчанию

Вот так
Image1.Picture.SaveToFile(FileName) ;
Программы на заказ Delphi, Pascal.
ася: 415 253 529. Мыло: wowan141750@gmail.com.
]Wowan[ вне форума Ответить с цитированием
Старый 27.03.2009, 21:55   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Попробуй так:
Код:
If SaveDialog1.Execute Then Image1.Picture.SaveToFile(SaveDialog1.FileName);

P.S. И на всякий случай, если раньше не работал с TSaveDialog...

"If ... Then ... " ставится чтоб файл не сохранялся, если например нажали "Отмена"... А то может Ашибка быть...

В "Инспекторе Объектов" ставишь:
DefaultExt -> .bmp (формат в котором надо сохранять файл)

Нажимаешь на многоточие в Filter и в окошке заполняешь первую строчку:
Filter Name -> Windows Bitmap (ну или что-то подобное)
Filter -> *.bmp
Закрываешь окошко кнопкой ОК

После раскрываешь Options и там ещё два пункта:
ofOverwritePrompt -> True
ofPathMustExist -> True
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 27.03.2009 в 23:20. Причина: P.S.
DomiNick вне форума Ответить с цитированием
Старый 27.03.2009, 23:24   #8
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Для сохранения рисунка в .jpg пропиши в uses модуль -,Jpeg, а сам файл сохраняй стандартно - Image1.Picture.SaveToFile(' "имя файла" . jpg');.
Для работы с графикой в формате .jpg используется TImageJpeg (аналогично TBitMap) - с методами Create, Load/SaveToFile(),Free и т.п.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 29.03.2009, 11:53   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от DeKot Посмотреть сообщение
Для сохранения рисунка в .jpg пропиши в uses модуль -,Jpeg, а сам файл сохраняй стандартно - Image1.Picture.SaveToFile(' "имя файла" . jpg');.
Только сначала все же его перегнать в Jpeg надо, а то сохранится битмап с расширением jpg.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.03.2009, 12:21   #10
Ark
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

С диалогом разобрался но есть одна проблема.

При тестировании когда выскакивает диалог - когда я нажимаю вверх по каталогу - всё нормально. Но к примеру поднявшись до "Мой компьютер" когда двойным щелчком пытаюсь зайти в диск D - выскакивает такая ошибка

Код:
Project Project1.exe raised exception class EInvalidGraphic with message "Unknown picture file exstesion (.lnk)" бла бла бла процесс остановлен используйте пошаговый отладчик
В bmp - сохраняется прекрасно, если не пытаться влезть в каталог и сохранять на рабочий стол.

В принципе - мне в данной программе не требуется jpeg. Но всё таки - объясните пошагово - как его подключать. (В uses вроде прописал) Как "перегнать" Image в jpeg перед сохранением? Как настраивать это в диалоге - я понял.

Последний раз редактировалось Ark; 30.03.2009 в 12:31.
Ark вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как image сохранить в файл ? juan666777 Мультимедиа в Delphi 11 13.12.2014 09:51
как сохранить из memo в файл? RAVAL)) Общие вопросы Delphi 8 15.01.2013 18:09
Как сохранить файл заранее указывая папку? highklass Общие вопросы Delphi 2 09.06.2008 10:58
как сохранить строчки в TXT файл Ярослав Помощь студентам 2 17.05.2008 18:43