Показать сообщение отдельно
  #18  
Старый 16.11.2011, 00:44
monax_111 monax_111 вне форума
Прохожий
 
Регистрация: 13.11.2011
Сообщения: 11
Репутация: 10
Печаль

Цитата:
Сообщение от angvelem
И что не получается?
Код:
var
  Bitmap : TBitmap;
  Bits   : array of Byte;
...
var
  bi : PBITMAPINFO;
begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.LoadFromFile('C:\000.bmp');
    GetMem(bi, SizeOf(TBitmapInfo));
    try
      FillChar(bi^, SizeOf(TBITMAPINFO), 0);
      with bi^.bmiHeader do
      begin
        biSize          := SizeOf(TBITMAPINFOHEADER);
        biWidth         := Bitmap.Width;
        biHeight        := Bitmap.Height;
        biPlanes        := 1;
        biBitCount      := 24;
        biCompression   := BI_RGB;
      end;

      SetLength(Bits, Bitmap.Width * Bitmap.Height * (bi^.bmiHeader.biBitCount shr 3));
      GetDIBits(Bitmap.Canvas.Handle, Bitmap.Handle, 0, Bitmap.Height, Bits, TBitmapInfo(bi^), DIB_RGB_COLORS);
    finally
      FreeMem(bi, SizeOf(TBitmapInfo));
    end;
  finally
    Bitmap.Free;
  end;
end;
всё работает.


1) Апринципиально ставить try?? Что произойдет/не произойдет, если его не поставить???
2) зачем после bi ставить ^?? Это же служит для определения значения объекта, на который идет ссылка???
Ответить с цитированием