logo
Литература_1 / photon_old

Преобразование координат

Начальной точкой для рисования примитивов является верхний левый угол холста родителя необработанного виджета. Вам, вероятно, покажется более удобным использование в качестве начальной точки верхнего левого угла холста самого необработанного виджета.

После того, как Вы определили холст необработанного виджета, Вы можете выполнить одно из следующего:

PhPoint_t c1 = { 80, 60 };

PhPoint_t r = { 72, 52 };

c1.x += raw_canvas.ul.x;

c1.y += raw_canvas.ul.y;

PgSetFillColor(Pg_YELLOW);

PgDrawEllipse ( &c1, &r, Pg_DRAW_FILL );

Этот метод предпочтительный.

PhPoint_t c1 = { 80, 60 };

PhPoint_t r = { 72, 52 };

PgSetTranslation (&raw_canvas.ul, Pg_RELATIVE);

PgSetFillColor(Pg_YELLOW);

PgDrawEllipse ( &c1, &r, Pg_DRAW_FILL );

 Убедитесь, что Вы восстановили старое преобразование, перед тем как выйти из функции рисования необработанного виджета. Вот один из способов, как это сделать:

/* Восстановление преобразования извлечением координат холста необработанного виджета */

raw_canvas.ul.x *= -1;

raw_canvas.ul.y *= -1;

PgSetTranslation (&raw_canvas.ul, Pg_RELATIVE);

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4