Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 844

•  TDictionary Custom Sort  6 830

•  Fast Watermark Sources  6 610

•  3D Designer  9 576

•  Sik Screen Capture  6 952

•  Patch Maker  7 398

•  Айболит (remote control)  7 347

•  ListBox Drag & Drop  6 206

•  Доска для игры Реверси  98 222

•  Графические эффекты  7 519

•  Рисование по маске  6 804

•  Перетаскивание изображений  5 656

•  Canvas Drawing  6 035

•  Рисование Луны  5 830

•  Поворот изображения  5 276

•  Рисование стержней  3 869

•  Paint on Shape  3 023

•  Генератор кроссвордов  3 982

•  Головоломка Paletto  3 156

•  Теорема Монжа об окружностях  3 998

•  Пазл Numbrix  2 637

•  Заборы и коммивояжеры  3 452

•  Игра HIP  2 366

•  Игра Go (Го)  2 285

•  Симулятор лифта  2 680

•  Программа укладки плитки  2 243

•  Генератор лабиринта  2 800

•  Проверка числового ввода  2 402

•  HEX View  2 745

•  Физический маятник  2 433

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

256-цветное изображение из res-файла



Автор: Mark Lussier

Вот функция, правильно читающая 256-цветные изображения из файла ресурсов.


function LoadBitmap256(hInstance: HWND; lpBitmapName: PChar): HBITMAP;
var
  hPal, hRes, hResInfo: THandle;
  pBitmap: PBitmapInfo;
  nColorData: Integer;
  pPalette: PLogPalette;
  X: Integer;
  hPalette: THandle;
begin

  hResInfo := FindResource(hInstance, lpBitmapName, RT_BITMAP);
  hRes := LoadResource(hInstance, hResInfo);
  pBitmap := Lockresource(hRes);
  nColorData := pBitmap^.bmiHeader.biClrUsed;

  hPal := GlobalAlloc(GMEM_MOVEABLE, (16 * nColorData));

  {  hPal := GlobalAlloc( GMEM_MOVEABLE, ( SizeOf( LOGPALETTE ) +
  (nColorData * SizeOf( PALETTEENTRY )));}
  pPalette := GlobalLock(hPal);
  pPalette^.palVersion := $300;
  pPalette^.palNumEntries := nColorData;

  for x := 0 to nColorData do
  begin
    pPalette^.palPalentry[X].peRed := pBitmap^.bmiColors[X].rgbRed;
    pPalette^.palPalentry[X].peGreen := pBitmap^.bmiColors[X].rgbGreen;
    pPalette^.palPalentry[X].peBlue := pBitmap^.bmiColors[X].rgbBlue;
  end;

  hPalette := CreatePalette(pPalette^);
  GlobalUnlock(hRes);
  GlobalUnlock(hPal);
  GlobalFree(hPal);

end;

end.


Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте