Получение Координат Окна
Этот пример показывает использование AcGiViewportDraw:: polylineDc () и AcGiViewport:: getViewportDcCorners () чтобы получить координаты дисплея области просмотра. Эта функция удобна, когда Вы рисуете графику, которые зависят от физического размещения области просмотра, типа значков и маркеров, которые изменяются с размером или границами области просмотра. Рисовавшая графика изменится с панорамированием и изменением масштаба изображения.
Пример рисует поле в правом верхнем углу области просмотра. Ширина поля и высота - всегда десятая часть самого короткого измерения области просмотра, и поле центрировано десятая часть самого короткого измерения области просмотра вниз и налево от правого верхнего угла области просмотра:
void
AsdkIconSamp::viewportDraw(AcGiViewportDraw* pV)
{
// Get the current viewport’s display coordinates.
//
AcGePoint2d lower_left, upper_right;
pV->viewport().getViewportDcCorners(lower_left, upper_right);
double xsize = upper_right.x - lower_left.x;
double ysize = upper_right.y - lower_left.y;
xsize /= 10.0;
ysize /= 10.0;
double xcenter = upper_right.x - xsize;
double ycenter = upper_right.y - ysize;
double half_xsize = xsize / 2.0;
double half_ysize = ysize / 2.0;
// Create a unit square.
//
const int num_verts = 5;
AcGePoint3d verts[num_verts];
for (int i = 0; i < num_verts; i++) {
verts[i].x = xcenter;
verts[i].y = ycenter;
verts[i].z = 0.0;
}
verts[0].x -= half_xsize;
verts[0].y += half_ysize;
verts[1].x += half_xsize;
verts[1].y += half_ysize;
verts[2].x += half_xsize;
verts[2].y -= half_ysize;
verts[3].x -= half_xsize;
verts[3].y -= half_ysize;
verts[4] = verts[0];
pV->subEntityTraits().setColor(kRed);
pV->geometry().polylineDc(num_verts, verts);
}