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

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

•  TDictionary Custom Sort  6 457

•  Fast Watermark Sources  6 241

•  3D Designer  9 202

•  Sik Screen Capture  6 588

•  Patch Maker  6 980

•  Айболит (remote control)  6 975

•  ListBox Drag & Drop  5 844

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

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

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

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

•  Canvas Drawing  5 713

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

•  Поворот изображения  4 960

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

•  Paint on Shape  2 793

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

•  Головоломка Paletto  2 952

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

•  Пазл Numbrix  2 478

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

•  Игра HIP  2 127

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

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

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

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

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

•  HEX View  2 584

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

 
скрыть

  Форум  

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

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



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.