Как правильно обращаться с перьями и рисовать в С# ?
От: Аноним  
Дата: 13.04.09 15:10
Оценка:
Давно не мучился с графикой... Стал простой вопрос о том, как люди решают проблему с перьями и системой рисования в Windows Forms и C#.
Как нужно реализовать алгоритм рисования графических примитивов на холсте так, чтобы качество(с точки зрения геометрии и перекрытия отдельных элементов) не страдало от толщины пера?

Допустим задача: нарисовать 2 прямоугольника так, чтобы один был вложен в другой и они не перекрывались при изменении толщин их перьев.
При простом алгоритме реализации этого выходит куча подводных камней из-за условия возможности изменения толщин перьев, которыми рисуются контуры этих прямоугольников...
Например:

// получаем ссылку на объект графики
Graphics g = e.Graphics;
// создаем перо для рамки графика
Pen gpen = new Pen(Color.Red, 5);
// уменьшаем размер прямоугольной клиентской области на толщину пера рамки
recf.Inflate(-gpen.Width/2, -gpen.Width/2);
// рисуем рамку графика
g.DrawRectangle(gpen, recf.X, recf.Y, recf.Width, recf.Height);

gpen.Width = 1;
gpen.Color = Color.Black;
recf.Inflate(-gpen.Width , -gpen.Width );
g.DrawRectangle(gpen, recf.X, recf.Y, recf.Width, recf.Height);


Как видно из кода выше, такой вариант не выполняет требования по- допустимости смены толщин перьев одного и другого прямоугольника...
Простое тестирование его при различных значениях gpen.Width показывает, что эти прямоугольники будут перекрываться при различных соотношениях толщин их перьев...

Надеюсь, что суть вопроса мне все-таки удалось изложить не смотря на характер описания...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.