Если эту библиотеку пишешь ты - то проще некуда: делаешь в DLL разные картинки в ресурсах, например так я когда-то делал:
Код:
Type
AImgs = array [word] of pointer;
ATyps = array [word] of byte;
TInit = record
ImgCount: word;
imgTypes: ^ATyps;
Images: ^AImgs;
end;
Procedure InitMain(var Init: TInit);
begin
with Init do
begin
ImgCount := 3;
GetMem(imgTypes, ImgCount);
GetMem(Images, sizeof(TBitMap) * ImgCount);
Images^[0] := TBitMap.Create;
TBitMap(Images^[0]).LoadFromResourceName(hInstance, 'Bitmap_1');
ImgTypes^[0]:=0;
Images^[1] := TBitMap.Create;
TBitMap(Images^[1]).LoadFromResourceName(hInstance, 'Bitmap_2');
ImgTypes^[1]:=0;
Images^[2] := TPngImage.Create;
TPngImage(Images^[2]).LoadFromResourceName(hInstance, 'PngImage_1');
ImgTypes^[2]:=1;
end;
end;
А в общем случае - можно и из своих, и из чужих достать. Например, архиваторы так некоторые делают (тот же 7-zip). Может, надо посмотреть в той стороне.