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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.10.2008, 05:49
Аватар для Zander_driver
Zander_driver Zander_driver вне форума
Прохожий
 
Регистрация: 07.03.2008
Сообщения: 29
Репутация: 10
По умолчанию Обьясните с TBitmap

Здравствуйте. Ситуация такая: обьявляю глобальную переменную TBitmap, как полагается создаю ее через Create, потом LoadFromFile из bmp-файла, потом на ее канве рисую разные вещи, потом вывожу ее на канву формы с помощью метода Draw.
Проблема вот в чем: если программе предлагается bmp-файл, созданный в "Пайнте" то все работает без всяких проблем. Если же файл создан в фотошопе (расширение то же самое - bmp, 24 бита, windows) то программа выдает ошибку "Stream read error" при попытке загрузить изображение из файла. Обьясните мне пожалуйста, почему так выходит? может надо что-то в код дописать для лучшей читаемости bmp или в фотошопе какую опцию сохранения включить?
Ответить с цитированием
  #2  
Старый 23.11.2008, 21:58
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

(предыдущее сообщение игнорируем...)

Если я напишу:
var image:TBitmap;
...
image:= TBitmap.Create;
Image.LoadFromFile('moon.bmp');
...

То битмап где окажется, в озу(оперативной памяти) или в видео памяти?
Ответить с цитированием
  #3  
Старый 23.11.2008, 23:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. В ОЗУ, кстественно.
2. По предыдущему вопросу. BMP - это общий формат (контейнер). Там может быть несколько внутренних форматов, какие-то из которых нативно могут и не поддержтваться. Напримет, маковский битмап.
Ответить с цитированием
  #4  
Старый 24.11.2008, 08:30
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

По поводу первого поста. Тоже с этим сталкивался. Взял отключил гдето флаг "сглаживание" (не при сохранении, вроде бы) и все заработало. А вообще я просто беру и ACDSee перевожу из BMP в BMP просто и все норм читается.
Ответить с цитированием
  #5  
Старый 24.11.2008, 13:34
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

А как узнать цвет пикселя, допустим в точке (5,1) ?
Ответить с цитированием
  #6  
Старый 24.11.2008, 13:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если считать один пиксел, то так: bmp.Canvas.Pixels[X,Y].
Если надо считывать всю картинку (для реализации граф. фильтра, например), то через ScanLine
Ответить с цитированием
  #7  
Старый 28.11.2008, 11:08
delphik delphik вне форума
Прохожий
 
Регистрация: 27.11.2008
Адрес: Volgograd
Сообщения: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от DungeonLords
А как узнать цвет пикселя, допустим в точке (5,1) ?

Попробуй так:
var
Col : TColor;
X, Y : Integer;
begin
X:=1; Y:=5;
Col := Image1.Canvas.Pixels[X, Y];
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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