Создаю новый объект TsgCADImage, добавляю несколько примитивов. Затем пытаюсь установить размеры области рисования методом PaintBox->ShowRect(). Для одних значений ShowRect() работает нормально, для других - нет. Заметил, что некорректности в работе появляются, если размеры области, передаваемой ShowRect() превышают размеры PaintBox по ширине или высоте. Это ошибка в функции, или я ее неправильно использую? Каким методом лучше всего сделать видимой нужную часть рисунка? ShowPoint() не совсем подходит, так как размер области указывается через высоту и ширину.
Code: Select all
TsgDrawingNavigator *PaintBox;
TsgCADImage *CADImage;
void __fastcall TMainForm::BarBtn_FixViewClick(TObject *Sender)
{
TsgCADImage *newImage;
PaintBox = new TsgDrawingNavigator(this);
PaintBox->Parent = Panel1;
PaintBox->Align = alClient;
newImage = new TsgCADImage();
newImage->Converter->InitializeSections();
newImage->CurrentLayout = newImage->Layouts[0];
PaintBox->BeginUpdate();
PaintBox->Picture->Graphic = newImage;
CADImage = (TsgCADImage *)(PaintBox->Picture->Graphic);
CreateLine(MakeFPoint(0, 0, 0), MakeFPoint(50, 50, 0));
PaintBox->EndUpdate();
CADImage->GetExtents();
PaintBox->ShowRect(MakeFRect(-10, 100, 0, 100, -10, 0)); //нормально
PaintBox->ShowRect(MakeFRect(-10, 2000, 0, 2000, -10, 0)); //некорректно
delete newImage;
}
//---------------------------------------------------------------------------
TsgDXFLine *TMainForm::CreateLine(TFPoint StartPoint, TFPoint EndPoint)
{
TsgDXFLine *NewLine;
NewLine = new TsgDXFLine();
NewLine->Point = StartPoint;
NewLine->Point1 = EndPoint;
NewLine->Color = clBlack;
NewLine->LineWeight = 0.1;
AddEntity(CADImage->Converter, csEntities, NewLine);
return NewLine;
}
//---------------------------------------------------------------------------
void TMainForm::AddEntity(TsgDXFConverter *AConverter, TConvSection sect, TsgDXFEntity *AEntity)
{
AConverter->Sections[sect]->AddEntity(AEntity);
if (AConverter->OnCreate)
AConverter->OnCreate(AEntity);
AConverter->Loads(AEntity);
}
//---------------------------------------------------------------------------