Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2009, 22:19
Аватар для Excreman
Excreman Excreman вне форума
Прохожий
 
Регистрация: 06.11.2008
Сообщения: 21
Репутация: 10
Печаль "bitmap image is not valid"-объясните поподробнее

Я новичок. зашел в дельфи 9, решил попробовать вывести на экран простую картинку (jpg).Использовал страндартные методы:

Переменная:=TBitMap.Create;
Переменная.Loadfromfile('c:\\******************');
Form1.canvas.Draw(1,1,переменная);


Поставил вот такого типа инструкцию на событие "onpaint", скомпилировал-
ошибок нет.Запустил(из дельфи)-появилось сообщение "bitmap image is not valid" (изображение типа битмап повреждено) .И программу приходилось закрывать,т.к. картинка не показывалась.Я подумал, может и в самом деле повреждено изображение открыл через стандартную прогу винды-все открывается и через пейнт тоже.Попробовал другое изображение , тоже jpg- тоже самое. Размеры окон менял,менял событие (on click, on show...), пробовал отобразить на компоненте image- ничего не помогает.Потом создал через пейнт простой бмпшник- и он с той же моей прогой запустился как миленький, никакой проблемы....
Может кто-нибудь объяснить, почему дельфи не загружает вышеобозначенным методом jpg,gif,png и прочие bmp-похожие картинки?И если есть другой способ вывести их на канву, расскажите о нем плз.

Последний раз редактировалось Excreman, 18.04.2009 в 23:06.
Ответить с цитированием
  #2  
Старый 18.04.2009, 22:34
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Укажите в списке модулей модуль Jpeg
Код:
uses
  JPEG;

P.S. Можно попросить вас не ругаться
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.

Последний раз редактировалось Karsh, 18.04.2009 в 22:38.
Ответить с цитированием
  #3  
Старый 18.04.2009, 23:23
Аватар для Excreman
Excreman Excreman вне форума
Прохожий
 
Регистрация: 06.11.2008
Сообщения: 21
Репутация: 10
По умолчанию

пост почистил , указал

Код:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls , JPEG;
но не помогло ,jpg все равно не показывается .Может, программа не нашла юнит JPEG
Ответить с цитированием
  #4  
Старый 18.04.2009, 23:34
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Извиняюсь, недоглядел что у вас переменная типа TBitMap.
Используйте тип TImage или TJPEGImage
Код:
var
  Jpg: TJPEGImage;
begin
  Jpg:= TJPEGImage.Create;
  Jpg.LoadFromFile('путь к файлу');
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
  #5  
Старый 18.04.2009, 23:43
Аватар для Excreman
Excreman Excreman вне форума
Прохожий
 
Регистрация: 06.11.2008
Сообщения: 21
Репутация: 10
По умолчанию

УРЯЯЯЯЯЯ! Заработало! Спасибо!! Все теперь отображается.Один только вопрос: тип TJpegImage подходит только для .jpg картинки или для каких-нибудь других картинок тоже подходит?Скажем. для .gif , .png и др.
Ответить с цитированием
  #6  
Старый 18.04.2009, 23:53
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Класс TImage (из модуля ExtCtrls) должен понимать различные форматы изображений, при условии наличия соответствующих модулей.
Для jpg - модуль Jpeg (прилагается с Delphi).
Bmp и, вроде как, gif не требуют спец. модуля (на счет gif могу ошибаться).
Для png нужно искать модуль. Я на этом форуме выкладывал модуль для png, но не помню в какой теме...
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
  #7  
Старый 18.04.2009, 23:54
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А для PNG придется уже подключить PNGImage.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter