Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2008, 16:00   #11
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию

2alexBlack:
Хорошо, учту.

Только вынести цикл (GetLine) всё равно не получается:
Код:
Function GetLine(Const Bitmap: TBitmap; Const RGBArray: PRGBArray; Const Index: Cardinal): Boolean;
Var
  Scan: Pointer;
Begin
  Result:=False;

  If Index>=Bitmap.Height Then Exit;

  Scan:=Bitmap.ScanLine[Index];

  { Здесь ошибка             }
  RGBArray^:=TRGBArray(Scan^);
 

  Result:=True;
End;
Полная программа в архиве.

При рисовании делал тест скорости. У меня получилось в среднем 75.
Вложения
Тип файла: rar TestScanLine.rar (3.0 Кб, 8 просмотров)
Format C: вне форума Ответить с цитированием
Старый 26.06.2008, 16:18   #12
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

RGBArray^ := TRGBArray(Scan^);
Это операция копирования. Копируется sizeOf(TRGBArray) байт - sizeOf(TRGBPixel)*65536 - те самые 200К, про которые Вы говорили. А по ссылке Scan^ доступно только BitMap.width*3 байт. Отсюда Access Violation.

Попробуйте так:
move(Scan^, RGBArray^, sizeOf(TRGBPixel)*BitMap.width);
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение картинки &RiU Помощь студентам 2 28.05.2008 23:46
движение по эллипсу Оля Помощь студентам 2 08.05.2007 00:50
Движение Mickle Общие вопросы Delphi 5 19.04.2007 23:24
Движение по окружности Mickle Общие вопросы Delphi 3 13.04.2007 16:24
Движение камеры LepihinMS Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 16.03.2007 20:46