Показать сообщение отдельно
Старый 13.01.2011, 12:28
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Сообщение от passertm Посмотреть сообщение
Разве BitmapData хранить информацию о матрице. Если хранит то зачем?
Если не хранит почему не получается без матрицы нарисовать содержимое BitmapData?
Не хранит. Но также и не хранит информацию об исходных координатах точек, которые были отрисованы в BitmapData. После отрисовки в (0, 0) BitmapData попадает (r.left, r.top) исходного изображения.

А нарисовать не получается, потому что вы хотите не того, что на самом деле делает beginBitmapFill + drawRect. Неверно ожидать, что (0, 0) от используемой текстуры будет в каком-то углу прямоугольника. Вообще, схема рисования с bitmapFill следующая:
  1. Берется исходная текстура с координатами (0,0).
  2. Размножатеся или растягивается по всей плоскости (параметр repeat)
  3. Ко всей плоскости применяется указанный Matrix.
  4. При необходимости применяется smoothing.
  5. На плоскости фигурой вырезается контур. При этом контур может быть невыпуклым, со внутренними вырезами и т.п. Контур может формироваться рисованием фигур (drawRect, drawCircle и т.п.) и рисованием примитивов (moveTo, lineTo, curveTo).
  6. Вырезанная область и является результатом отрисовки
Обратите внимание, что область (изображение) формируется до того, как нарисована первая точка. Ну и в вашем случае вы из размноженной картинки (0, 0, r.right-r.left, r.bottom-r.top) вырезаете прямоугольник (r.left, r.rigth, r.right-r.left, r.bottom-r.top). Очевидно, что скорее всего картинка будет неправильной.