Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сдвиг TKolImageShow ? [Delphi, Windows]


Alex- ©   (2004-11-23 21:17:00) 

Мастера ! Как избавиться от эффекта привязки картинки ImageShow1 к форме. Т.е. при изменении положения ImageShow1 на форме, не дает соответствующего изменения положения нарисованной картинки.


Unknown Mystic   (2005-02-18 20:58:00) [1]

>> Halfback   (18.02.05 18:35) [13]

Откуда ему (ImageShow) знать, что надо перерисовываться? Ты ему Invalidate скажи.


Halfback   (2005-02-18 20:11:00) [2]

>> thaddy
Т.е. если я правильно понял проблема в самом компоненте ImageList?

В принципе у меня получилось вывести картинку в ImageShow, вот:
procedure TForm1.Button1Click(Sender: PObj);
begin
ImageShow1.ImageListNormal.ImgWidth:= 512;
ImageShow1.ImageListNormal.ImgHeight:=256;
ImageShow1.ImageListNormal.Colors:= ilcColorDDB;
ImageShow1.ImageListNormal.BkColor:= clDefault;
ImageShow1.ImageListNormal.LoadFromFile('texpa.bmp',clNone,itBitMap);
if ImageShow1.ImageListNormal.LoadFromFile('texpa.bmp',clNone,itBitMap)=true then
   ShowMessage('Image Loaded') else ShowMessage('Image Not Loaded');
ImageShow1.Add('texpa');
end;

Как видно я добавил строку ImageShow1.Add('texpa') которая вообще непонятно что означает.
Но изображение явно потеряло битность, причем очень заметно. На глаз показывает всего 8-16 цветов(а не бит). Откуда такая потеря в качестве???


ECM   (2005-02-18 19:18:00) [3]

Попробуй так:

ImageShow1.ImageListNormal.Colors = ilcColorDDB

procedure TForm1.Button1Click(Sender: PObj);
var
 Bmp: PBitmap;
begin
 Bmp := NewBitmap(100,100);  
 Bmp.LoadFromFile('texpa.bmp');
 ImageList1.AddMasked(Bmp.Handle,clNone);
 ImageShow1.CurIndex := 0;
 Bmp.Free;
end;

А что не подходит в примерах ?
ИМХО: ImageShow удобнее использовать при показе наборов
картинок, которые имеют одинаковый размер и хранятся в одном
файле (привязка к ImageList)


thaddy   (2005-02-18 19:11:00) [4]

The problem is, you are using an imagelist. You should be using a bitmap. I see what I can figure out with an imagelist (not ment for moving pictures!) The difference between a PBitmap and a HBitmap is great!


thaddy   (2005-02-18 19:10:00) [5]

The problem is, you are using an imagelist. You should be using a bitmap. I see what I can figure out with an imagelist (not ment for moving pictures!) The difference between a PBitmap and a HBitmap is great!


Halfback   (2005-02-18 18:35:00) [6]

>> ECM
Надо при помощи ImageShow выводить bmp картинки на экран. Дайте работающий пример а то уже второй день бьюсь и нифига не выходит.
Делаю вроде как всё правильно, т.е.
1. Бросаю на форму ImageShow и ListShow
2. В инспекторе обьектов компонента ImageShow в пункте ImageListNormal указываю на ListShow
3. Запускаю процедуру
procedure TForm1.Button1Click(Sender: PObj);
begin
ImageShow1.ImageListNormal.LoadFromFile('texpa.bmp',clNone,itBitMap);
if ImageShow1.ImageListNormal.LoadFromFile('texpa.bmp',clNone,itBitMap)=true then
   ShowMessage('Image Loaded') else ShowMessage('Image Not Loaded');
end;
, которая выводит сообщение что рисунок загружен но в поле ImageShow ничего нет. Видимо решение простое но никак не могу его найти.
В VCL всё нормально работает а тут блин шиш.


ECM   (2005-02-18 17:34:00) [7]

А что надо то? (Только подробнее)


Halfback   (2005-02-18 17:30:00) [8]

>> ECM
Там нет того что мне надо.


Halfback   (2005-02-18 17:30:00) [9]

>> ECM
Там нет того что мне надо.


ECM   (2005-02-17 19:20:00) [10]

Короче... Ты демки смотрел? А то мне уже скучно...
http://bonanzas.rinet.ru/DemoBitmap2PaintBox.zip
http://bonanzas.rinet.ru/DemoKolBitmap.zip


Halfback   (2005-02-17 18:55:00) [11]

>> ECM
Так оно и оказалось. Вобщем сделал как написано. Но теперь другая проблема. Вот к примеру процедура:
procedure TForm1.Button1Click(Sender: PObj);
begin
ImageShow1.ImageListNormal.ImgWidth:= 512;
ImageShow1.ImageListNormal.ImgHeight:=256;
ImageShow1.ImageListNormal.LoadFromFile('D:\texpa.bmp',clNone,itBitMap);
if ImageShow1.ImageListNormal.LoadFromFile('D:\texpa.bmp',clNone,itBitMap)=true then
   ShowMessage('Image Loaded') else ShowMessage('Image Not Loaded');
end;

Сообщение выводит что кратинка загружена но на области ShowImage ничего нет.
А так если загружать картинку из инспектора обьектов то всё ОК!. Но правда изображение какое-то искареженное, как будто уменьшилась битность цветовой палитры.


ECM   (2005-02-17 17:46:00) [12]

А не забыл ли ты кинуть на форму ImageList и присвоить его
полю ImageListNormal для ImageShow1 в инспекторе обьектов?
Очень похоже, что нет...:)


Halfback   (2005-02-17 17:29:00) [13]

>> ECM
Да уже перерывал. Даже ставлю itBitMap но теперь при процедуре

procedure TForm1.Button1Click(Sender: PObj);
var i: byte;
begin
ImageShow1.ImageListNormal.LoadFromFile('D:\texpa.bmp',clNone,itBitMap);
end;

Вылетает [b]RunTime error 216 at 0040400A[/b]. А с ней то что делать?
Картинка texpa.bmp имеет параметры 512*256*8 BPP 129кБ.


ECM   (2005-02-17 16:14:00) [14]

Упс! Опечатка вышла - надо itBitmap... :)
А самому вломоткрыть kol.pas и посмотреть?
Или религия не позволяет? :)


Halfback   (2005-02-17 15:58:00) [15]

>> ECM
А вот шиш. Пишет что [Error] Unit1.pas(140): Incompatible types: 'TImageType' and 'Integer'и указавает на IMAGE_BITMAP, который типа принимает значения 0..127
Еще варианты будут ???


ECM   (2005-02-17 14:12:00) [16]

LoadFromFile('D:\pa.bmp',clNone,IMAGE_BITMAP)


Halfback   (2005-02-17 14:02:00) [17]

Может вопрос не по теме, но вот в чем дело: бросил на форму TShowImage. И не могу понять как загрузить в эту форму bmp файл.
Нашел процедуру
ImageShow1.ImageListNormal.LoadFromFile('D:\pa.bmp',,);
С первым параметром всё понятно, а что делать с двумя другими параметрами??
Помогите разобраться, а то вообще ничего не получается.


Владимир Кладов   (2004-11-24 16:08:00) [18]

Вот я поставил в коде на OnTimer:
procedure TForm1.Timer1Timer(Sender: PObj);
begin
 ImageShow1.Left := ImageShow1.Left + 1;
end;


Двигается по форме. Перерисовывается.


Наверх

Титульная страница Поиск, карта сайта Написать письмо