Тема: Растровое изображение
Вобщем идея такая. Есть растровое изображение. Мы его выбираем. А дальше делаем что-то похожее на rubersheet растердизайна. Только с бОльшим количеством вариантов "совмещения" точек рисунка с их новым положением. Все в принципе есть, математика не сильно сложная. Вот только одна проблема - это растр.
Можно конечно получить имя файла выбранного растра, потом с ним провести ряд действий, сохранив в другой файл, а потом незаметно вставить его вместо исходного.
Но. Автокад подгружает, по-моему, ВСЕ типы растров (jpeg, gif, bmp). Короче очень, даже очень лень писать собственную читалку для всех графических расширений с разными вариантами сжатия.
Первый вопрос.
Можно ли как-то получить уже созданную автокадом матрицу растра, ведь не с потолка же он рисует картинки?
На сколько я понял из хелпа она есть, и лежит в IeImg (если я не ошибаюсь). Только как ее достать?
Ну и второй вопрос, можно ли эту матрицу сохранять в графический файл?
... ads_name entImage; ads_point p; AcDbRasterImage * pImage; AcDbObjectId eId; bool next = true; while (next) { switch (acedEntSel("\nУкажите растровое изображение: ", entImage, p)) { case RTCAN : return; case RTERROR : continue; case RTNORM : if (acdbGetObjectId(eId,entImage) != Acad::eOk) return; if (acdbOpenObject(pImage, eId, AcDb::kForRead) != Acad::eOk) return; if (pImage == NULL) continue; next = false; pImage->close(); break; } } /* потом выбираются точки (уже в координатах растра) (кода много и он скорей всего не нужен, но если нада, могу выложить) дальше математика, получаем набор коэффициентов для изменения рисунка //-> а вот тут уже нужна матрица пикселей растра. */