Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

Конвертация bmp из ресурсов и иконку   Найти похожие ветки 

 
demon ©   (2008-08-02 03:44) [0]

В ресурсах есть bmp размером 16x96, как разделить её на 6 кусков 16х16 пикселов и сконвертировать каждый в icon?


 
PZ   (2008-08-02 09:00) [1]

Загрузить в ImageList - разделится автоматически.
Преобразовать BMP > ICO, например:
http://softsearch.ru/programs/112-714-bmp-in-ico-download.shtml


 
demon ©   (2008-08-02 14:54) [2]

програма на API, ImageList не получиться.

Преобразовывать буду так:
 Icon := TIcon.Create;
 IconInfo.fIcon := true;
 IconInfo.xHotspot := 0;
 IconInfo.yHotspot := 0;
 IconInfo.hbmMask := AndMask.Handle;
 IconInfo.hbmColor := XOrMask.Handle;
 Icon.Handle := CreateIconIndirect(IconInfo);

Осталось только загрузить BMP из резурсов и разрезать, подскажите как?


 
demon ©   (2008-08-02 17:20) [3]

Я сделал это так:

 AndMask := TBitmap.Create;
 AndMask.Monochrome := true;
 AndMask.Width  := 16;
 AndMask.Height := 16;
 AndMask.Canvas.Brush.Color := clBlack;
 AndMask.Canvas.FillRect(Rect(0, 0, 16, 16));

 TempBitmap := TBitmap.Create;
 TempBitmap.Handle := LoadBitmap(hInstance, "TRAYICONS");

 XOrMask := TBitmap.Create;
 XOrMask.Width  := 16;
 XOrMask.Height := 16;

 numberIcon:=1;
 XOrMask.Canvas.CopyRect(rect(0,0,16,16),tempBitmap.Canvas,rect(numberIcon*16,0,n umberIcon*16+16,16));

 Icon := TIcon.Create;
 IconInfo.fIcon := true;
 IconInfo.xHotspot := 0;
 IconInfo.yHotspot := 0;
 IconInfo.hbmMask := AndMask.Handle;
 IconInfo.hbmColor := XOrMask.Handle;
 Icon.Handle := CreateIconIndirect(IconInfo);

 Application.Icon := Icon;
 InvalidateRect(Application.Handle, nil, true);

 AndMask.Free;
 XOrMask.Free;
 Icon.Free;

Это грамотно? Может есть более эффективный способ?


 
Сергей М. ©   (2008-08-02 17:52) [4]


> програма на API, ImageList не получиться


Какой нафих АПИ, если ты TIcon и TBitmap используешь ?)


 
demon ©   (2008-08-02 18:24) [5]

ну значит в программе нет визуальных компанентов.
Апи функции работают с  TIcon и TBitmap, как без них вообще можно...

А по делу, код нормальный?


 
@!!ex ©   (2008-08-02 18:29) [6]

> ну значит в программе нет визуальных компанентов.

Ну так и ImageList можно не визуальный сделать.


> Апи функции работают с  TIcon и TBitmap, как без них вообще
> можно...

Легко. Вот загрузка BMP(грузит только 24 битные BMP без сжатия, преобразует в RGBA и отдает данные) на API:
int GetBMPData(std::string FileName,void* Data, unsigned int &Width, unsigned int &Height) //if Data==NULL return DataSize
{
cFile* BMP = new cFile(FileName,READ);
BITMAPFILEHEADER FileHeader;
BITMAPINFOHEADER InfoHeader;
BMP->Read(&FileHeader,sizeof(FileHeader));
BMP->Read(&InfoHeader,sizeof(InfoHeader));
if (Data==NULL)
{
 delete BMP;
 Width = InfoHeader.biWidth;
 Height = InfoHeader.biHeight;
 return InfoHeader.biWidth*InfoHeader.biHeight*4;
}
else
{
 assert(Width==InfoHeader.biWidth && Height==InfoHeader.biHeight && InfoHeader.biBitCount==24);
 char* It = (char*)Data;
 for (int y = 0; y<InfoHeader.biHeight; y++)
  for (int x = 0; x<InfoHeader.biWidth; x++)
  {
   unsigned char r,g,b,a;
   BMP->Read(&b,sizeof(b));
   BMP->Read(&g,sizeof(g));
   BMP->Read(&r,sizeof(r));
   a = 0xFF;
   *It = r;
   It++;
   *It = g;
   It++;
   *It = b;
   It++;
   *It = a;
   It++;
  };
 
 return 0;
};
};


 
Сергей М. ©   (2008-08-02 18:30) [7]


> значит в программе нет визуальных компанентов


TImageList не является визуальным компонентом.


> Апи функции работают с  TIcon и TBitmap


Нет, не работают, не выдумывай небылиц.


> код нормальный?


Главное чтобы тебе нравился)


 
@!!ex ©   (2008-08-02 18:42) [8]

О.. хорошо что я здесь код выложил.. заодно косяк в нем нашел.. нехилый..


 
{RASkov} ©   (2008-08-02 19:45) [9]

> [8] @!!ex ©   (02.08.08 18:42)

Называется: Поделился косяком со всеми...)


 
@!!ex ©   (2008-08-02 20:13) [10]

> [9] {RASkov} ©   (02.08.08 19:45)

Ну так код же, просто как пример, чт с Битмапами можно работать без TBItmap. :)



Страницы: 1 вся ветка

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
15-1216318636
@!!ex
2008-07-17 22:17
2008.09.14
Дизайн детей


2-1217634273
demon
2008-08-02 03:44
2008.09.14
Конвертация bmp из ресурсов и иконку


2-1217997524
Viod
2008-08-06 08:38
2008.09.14
Обратиться к объекту по имени хранящемся в строке


2-1217529981
Noobik
2008-07-31 22:46
2008.09.14
Вопрос по скрипиту на delphi


4-1195550970
guav
2007-11-20 12:29
2008.09.14
Список всех дисков (не томов, именно физических дисков).