Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизImageLit Найти похожие ветки
← →
Igor_thief (2004-12-21 11:26) [0]В ImageList при добавлении иконок в DesignTime есть такая кнопочка как Export, при помощти которой можно перегнать все содержимое ImageList в один BMP файл. Как потом загрузить иконки из этого файла обратно в ImageList программно?
← →
Александр Иванов © (2004-12-21 11:43) [1]ImageList1.FileLoad(rtBitmap,FileName,clFuchsia)
← →
Igor_thief (2004-12-21 11:57) [2]Александр Иванов © (21.12.04 11:43) [1]
Пробывал, но по неизвестным мне причинам грузится только верхний ряд картинок (при условии что картинки разместились как матрица 3х3, 4х4...).
← →
Leonid Troyanovsky © (2004-12-21 14:04) [3]
> Igor_thief (21.12.04 11:26)
> В ImageList при добавлении иконок в DesignTime есть такая
> кнопочка как Export, при помощти которой можно перегнать
> все содержимое ImageList в один BMP файл. Как потом загрузить
> иконки из этого файла обратно в ImageList программно?
FileLoad(rtBitmap, ..) ?
--
С уважением, LVT.
← →
Igor_thief (2004-12-21 16:47) [4]Leonid Troyanovsky © (21.12.04 14:04) [3]
Смотрите Igor_thief (21.12.04 11:57) [2]
--
С уважением, Igor_thief.
← →
Leonid Troyanovsky © (2004-12-21 21:02) [5]
> Igor_thief (21.12.04 16:47) [4]
> Смотрите Igor_thief (21.12.04 11:57) [2]
Не буду я ничего смотреть.
Хотел, конечно, сначала извиниться за поздний пост,
(тем более, что это была техническая ошибка).
А потом решил, что не стоит. Никому не режет глаз кривой
сабж, никто не извиняется за допущенные ошибки.
Так вот, на моей D6 я могу сохранить в линию (не в двумерный
массив) хоть 150 иконок.
А в D3 я никогда и не знал таких прелестей (Export) и
прекрасно без оной обходился (хоть 200 иконок).
Вот так-то.
--
С уважением, LVT.
← →
Igor_thief (2004-12-23 21:53) [6]Leonid Troyanovsky © (21.12.04 21:02) [5]
Ух какой нервный!
Спокойно!
А как обходился без экспорт?
← →
Просто Джо © (2004-12-24 03:07) [7]
> Igor_thief (23.12.04 21:53) [6]
Ну и зачем "этот" экспорт так нужен?
← →
Igor_thief (2004-12-24 21:02) [8]Просто Джо © (24.12.04 03:07) [7]
Дело в том, что мне надо чтобы все катинки из ImageList не были в ресурсе программы, а загружались в него из внешнего файла. Желательно чтобы он был один, а не равен числу картинок. Экспорт помогает решить это. НО также надо сделать возможность экспорта программно, так как количество картинок может меняться.
← →
Leonid Troyanovsky © (2004-12-25 13:44) [9]
> Igor_thief (23.12.04 21:53) [6]
> А как обходился без экспорт?
by Vladimir Titov:
uses
commctrl;
procedure ImageList_WriteData(ImageList: TImageList; Stream: TStream);
var
SA: TStreamAdapter;
begin
SA := TStreamAdapter.Create(Stream);
try
if not ImageList_Write(ImageList.Handle, SA) then
raise EWriteError.Create("Failed to write ImageList data to stream");
finally
SA.Free;
end;
end;
procedure ImageList_ReadData(ImageList: TImageList; Stream: TStream);
var
SA: TStreamAdapter;
begin
SA := TStreamAdapter.Create(Stream);
try
ImageList.Handle := ImageList_Read(SA);
if ImageList.Handle = 0 then
raise EReadError.Create("Failed to read ImageList data from stream");
finally
SA.Free;
end;
end;
procedure ImageList_SaveToFile(ImageList: TImageList; const FileName: string);
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create(FileName, fmCreate);
try
ImageList_WriteData(ImageList, FileStream);
finally
FileStream.Free;
end;
end;
procedure ImageList_LoadFromFile(ImageList: TImageList; const FileName:
string);
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create(FileName, fmShareDenyNone);
try
ImageList_ReadData(ImageList, FileStream);
finally
FileStream.Free;
end;
end;
--
Regards, LVT.
← →
Igor_thief (2004-12-28 18:38) [10]Leonid Troyanovsky © (25.12.04 13:44) [9]
Шас потестю!
← →
Igor_thief (2004-12-28 18:48) [11]Leonid Troyanovsky © (25.12.04 13:44) [9]
Не работает!
← →
Ученик (2004-12-28 21:53) [12]На основе Delphi7\Source\Property Editors\ClxImgEdit.pas
Bitmap.LoadFromFile()
function ImageListFromBitmap(ImageList : TCustomImageList; Bitmap : TBitmap; MaskColor : TColor = clFuchsia) : Integer;
var
X, Y: Integer;
IWidth, IHeight: Integer;
NewBitmap: TBitmap;
SubDivideX, SubDivideY: Boolean;
DivideX, DivideY: Integer;
begin
Result := ImageList.Count;
NewBitmap := TBitmap.Create;
try
IWidth := ImageList.Width;
IHeight := ImageList.Height;
NewBitmap.Width := IWidth;
NewBitmap.Height := IHeight;
SubDivideX := (Bitmap.Width > IWidth) and (Bitmap.Width mod IWidth = 0);
SubDivideY := (Bitmap.Height > IHeight) and (Bitmap.Height mod IHeight = 0);
if SubDivideX then
DivideX := Bitmap.Width div IWidth
else
DivideX := 1;
if SubDivideY then
DivideY := Bitmap.Height div IHeight
else
DivideY := 1;
for Y := 0 to DivideY - 1 do
for X := 0 to DivideX - 1 do begin
NewBitmap.Canvas.CopyRect(Rect(0, 0, NewBitmap.Width,
NewBitmap.Height), Bitmap.Canvas,
Rect(X * IWidth, Y * IHeight, (X + 1) * IWidth,
(Y + 1) * IHeight));
ImageList.AddMasked(NewBitmap, MaskColor)
end
finally
NewBitmap.Free
end;
end;
← →
Igor_thief (2004-12-30 13:08) [13]Ученик (28.12.04 21:53) [12]
Вечерком проверю!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c