Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

Конвертация 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
3-1205476733
Evgeny V
2008-03-14 09:38
2008.09.14
ADO и параметры


3-1206004854
Alexey
2008-03-20 12:20
2008.09.14
Работа с таблицами Fox Pro в Delphi 7


2-1217707537
programmer90
2008-08-03 00:05
2008.09.14
Делфи 2007+Инет+МС Офис


3-1205766628
dest81
2008-03-17 18:10
2008.09.14
dbgrideh и фильтрация


2-1217590545
serg2195
2008-08-01 15:35
2008.09.14
Помогите научиться азам программирования под WinCE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский