Xpoint
   [напомнить пароль]

Как в CorelDraw сделали Quick trim ?

Метки: [без меток]
2004-11-14 16:13:05 [обр] Владислав[досье]

Здравствуйте!!!
Я пытаюсь сделать это на C#

GraphicsPath GP1 = new GraphicsPath();
GraphicsPath GP2 = new GraphicsPath();
GP1.AddRectangle(new Rectangle(0,0,100,100));
GP2.AddRectangle(new Rectangle(40,0,20,100));
Region RG1 = new Region(GP1);
Region RG2 = new Region(GP2);
RG1.Xor(RG2);
e.Clip = RG1;

Как теперь получить GraphicsPath из получившегося региона RG2 ?
Мне нужно дотянуться до всех точек из чего состоит мой RG2.
Для GraphicsPath это просто PathPoints который вернет масив точек.
Очень удобно. Но для GraphicsPath нет метода Xor или ему подобного.
Было бы весьма удобно типа GP1.Выкусить(GP2)

спустя 3 дня [обр] Владислав[досье]
Неужели очень трудный вопрос ?
Почти каждая маломальски продвинутая программа для работы с графикой
имеет функции вырезания одной фигуры из другой (trim), их обединение (union),
вырезание общей облати (intersect) и т.п.
Так КАК ЭТО ДЕЛАЕТСЯ ?
Вроде этот форум для подготовленных программистов....
И на RSDN.ru тоже тишина.
спустя 8 часов [обр] Сергей Чернышев(5/589)[досье]
Владислав[досье]
Все сводится к работе с векторами. Если вы сами не можете сообразить что к чему, то объяснять здесь достаточно глупо. Существует куча книг по компьютерной графике - купите одну и все станет просто.
спустя 13 часов [обр] Владислав[досье]
Хорошо, если так все складывается глупо, дайте пожалуйста линк
на книгу по комп. графике где освещались бы поднятый мой вопрос.
Куплю за любые деньги.
спустя 15 минут [обр] Владислав[досье]
Есть у меня одна книга по комп. графике E.A. Никулин
Очень муторно написано. Не формулы а пляшущие человечки.
Тут надо быть кандидатом математических наук.
спустя 16 часов [обр] Сергей Чернышев(5/589)[досье]
Владислав[досье]
У меня когда-то был старый четырехтомник на говеной бумаге - там описывалось про то как писать на C. Сейчас уже не вспомню как оно называлось. Попробуйте воспользоваться Яндексом или Гуглом.
спустя 9 часов [обр] Владислав[досье]
Тема еще жива. Решиний пока невижу.
спустя 4 дня [обр] Закиров Руслан(0/343)[досье]
Может вам поможет:
http://algolist.manual.ru/graphics/clip_poly.php
спустя 12 дней [обр] Владислав[досье]
Написал алгоритм отсечения методом Сазерленда-Ходжмана (Sutherland-Hodgman)
При его простоте он имеет один недостаток - при отсечении невыпуклого полигона
появляються ложные грани. Как от них избавиться ?
спустя 2 минуты [обр] Владислав[досье]
Сорри :) рисунок очень большой получился.
спустя 12 часов [обр] Дмитрий Котеров(15/912)[досье]
Вы бы еще пояснили, что этот рисунок означает...
спустя 21 день [обр] Владислав[досье]
А это масив точек образованный в результате работы алгоритма Сазерленда-Ходжмана.
См. рисунок. Красный это отсекатель.
Нужно теперь его проанализировать и избавиться от ложных граней.
Т.е. Тот отрезок который содержит в себе ложную грань, надо разбить на 2 отрезка (в моем случае), Что бы получилось 2 массива точек.
Powered by POEM™ Engine Copyright © 2002-2005