Удалить сегменты линии, которые разделены между прямоугольниками - PullRequest
1 голос
/ 06 декабря 2011

Первое изображение - это то, что у меня есть - список Rectangle, который я использую, чтобы «выделить» строку символов. Второе изображение (справа) представляет собой макет того, что я хотел бы увидеть.

Каков наилучший способ удаления сегментов общей линии?

What I have What I want

1 Ответ

0 голосов
/ 06 декабря 2011

Хорошо, думаю, я нашел приличное решение.

// create a pen with a width of 2px (half of it will be blanked out so it will
// essentially be a width of 1px)
Pen pen = new Pen(Color.Blue, 2f);

// build a GraphicsPath with the rectangles
GraphicsPath gp = new GraphicsPath();
gp.AddRectangle(...);
gp.AddRectangle(...);
gp.AddRectangle(...);

// g is our Graphics object
// exclude the region so the path doesn't draw over it
Region reg = new Region(gp);
g.ExcludeClip(reg);

// now draw path, it won't show up inside the excluded clipping region
g.DrawPath(pen, gp);

// clean up
g.ResetClip();
pen.Dispose();
gp.Dispose();
reg.Dispose();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...