![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сдвиг 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);, которая выводит сообщение что рисунок загружен но в поле ImageShow ничего нет. Видимо решение простое но никак не могу его найти.
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;
В 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;
Двигается по форме. Перерисовывается.