ObjectARX, AutoCAD. Среда программирования библиотеки C++

Получение Координат Окна


Этот пример показывает использование 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);

}



Содержание раздела