Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > bitmap


Автор: Алкоголик 9.10.2008, 14:08
Здраствуйте. Проблема в следующем: 
Вот код, рабочий код. Но когда G.Height>~7000 происходит ошибка при присваивании этого значения... и не пойму почему.
Не поможете разобраться? 

Код

procedure TRotateImage.RebuildOriginalBitmap;
var
  G: TGraphic;
  OrgBitmap: TBitmap;
begin
  OrgBitmap := nil;
  G := Picture.Graphic;
  if Assigned(G) and not G.Empty then
  begin
    if G is TBitmap then
      OrgBitmap := TBitmap(G)
    else
    begin
      OrgBitmap := TBitmap.Create;
      OrgBitmap.Canvas.Brush.Color := Color;
      OrgBitmap.Width := G.Width;
      OrgBitmap.Height := G.Height;
      OrgBitmap.PixelFormat := pf32bit;
      OrgBitmap.Canvas.Draw(0, 0, G);
      OrgBitmap.TransparentColor := OrgBitmap.Canvas.Brush.Color;
      OrgBitmap.Transparent := G.Transparent;
    end;
  end;
  if Assigned(OriginalBitmap) and OriginalCopied then
    OriginalBitmap.Free;
  FOriginalBitmap := OrgBitmap;
  FOriginalCopied := Assigned(OrgBitmap) and (OrgBitmap <> G);
end;


Добавлено @ 14:11
Да код этот из этого компонента: 

Автор: Alexeis 9.10.2008, 17:35
 это около 200Мб. Мож в оперативке нет места под цельный кусок такого размера.

Автор: Алкоголик 9.10.2008, 18:33
А нужен именно цельный кусок? Так там 4 гб оперативки, но работает 6 таких прог. Все одновременно они не используются, как правило одновременно 1-3. А есть способ обойти как то это ограничение? 

Автор: Alexeis 9.10.2008, 19:41
Алкоголик, насколько я помню для DDB выделяется память в особой системной области, а там как раз много не выделишь. Попробуй перед установкой размеров установить PixelFormat в pf24bit, тогда будет создан DIB, и память выделена в другом месте. Для 4х Гб должны быть непрерывные куски по даже в 500Мб.

Автор: Алкоголик 10.10.2008, 12:17
Alexeis,  спасибо за помощь, действительно помогло. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)