Как перемеÑтит объекты HPGL
Posted: 19 Feb 2007, 10:03
Доброго днÑ! Помогите пожалуйÑта.
Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.
Формат файла PLT. Я так понимаю вÑе объекты HPGL имеют тип TsgFlatPoly. Работаю в C++Builder 5.0.
Отображаю на Ñтандартный TImage. Вот код:
Hpgl2::TsgHPGLImage* mHPGL = dynamic_cast<Hpgl2::TsgHPGLImage*> (mImage->Picture->Graphic);
Dxfconv::TsgDXFConverter* mConv = mHPGL->Converter;
Dxfconv::TsgFlatPoly * mPoly;
int nHeight = mImage->Picture->Graphic->Height,
nWidth = mImage->Picture->Graphic->Width;
// Перебираем вÑе объекты
for(int nEntNum = 0; nEntNum < mConv->Counts[csEntities]; nEntNum++)
{
// ЕÑли не TgsFlatPoly, значит ошибка
if (mConv->Entities[nEntNum]->ClassType() != __classid(TsgFlatPoly))
{
Application->MessageBox(AnsiString("ÐеизвеÑтный тип векторного объекта: " +
mConv->Entities[nEntNum]->ClassName()).c_str(), "Предупреждение", MB_ICONINFORMATION | MB_OK);
continue;
}
mPoly = dynamic_cast<Dxfconv::TsgFlatPoly *> (mConv->Entities[nEntNum]);
// ИзменÑем вÑе координаты объекта
for(int nPointNum = 0; nPointNum < mPoly->PCount(); nPointNum++)
mPoly->XY[nPointNum] = MakeFPoint(nHeight - mPoly->XY[nPointNum].Y, mPoly->XY[nPointNum].X, 0);
// ОбновлÑем объект
mConv->Loads(mPoly);
mHPGL->GetExtents();
}
При выполнении кода изображение проÑто пропадает. Ðо где ошибка? Пробовал отображать на ваш TsgImage, но результат такой же.
Стоит Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°: повернуть изображение по чаÑовой Ñтрелке на 90 градуÑов.
Формат файла PLT. Я так понимаю вÑе объекты HPGL имеют тип TsgFlatPoly. Работаю в C++Builder 5.0.
Отображаю на Ñтандартный TImage. Вот код:
Hpgl2::TsgHPGLImage* mHPGL = dynamic_cast<Hpgl2::TsgHPGLImage*> (mImage->Picture->Graphic);
Dxfconv::TsgDXFConverter* mConv = mHPGL->Converter;
Dxfconv::TsgFlatPoly * mPoly;
int nHeight = mImage->Picture->Graphic->Height,
nWidth = mImage->Picture->Graphic->Width;
// Перебираем вÑе объекты
for(int nEntNum = 0; nEntNum < mConv->Counts[csEntities]; nEntNum++)
{
// ЕÑли не TgsFlatPoly, значит ошибка
if (mConv->Entities[nEntNum]->ClassType() != __classid(TsgFlatPoly))
{
Application->MessageBox(AnsiString("ÐеизвеÑтный тип векторного объекта: " +
mConv->Entities[nEntNum]->ClassName()).c_str(), "Предупреждение", MB_ICONINFORMATION | MB_OK);
continue;
}
mPoly = dynamic_cast<Dxfconv::TsgFlatPoly *> (mConv->Entities[nEntNum]);
// ИзменÑем вÑе координаты объекта
for(int nPointNum = 0; nPointNum < mPoly->PCount(); nPointNum++)
mPoly->XY[nPointNum] = MakeFPoint(nHeight - mPoly->XY[nPointNum].Y, mPoly->XY[nPointNum].X, 0);
// ОбновлÑем объект
mConv->Loads(mPoly);
mHPGL->GetExtents();
}
При выполнении кода изображение проÑто пропадает. Ðо где ошибка? Пробовал отображать на ваш TsgImage, но результат такой же.