Сглаживание DrawLine на CE - PullRequest
       86

Сглаживание DrawLine на CE

3 голосов
/ 19 января 2011

Я рисую линию для объекта Graphics в Windows CE, используя C # .NET 3.5.

Код, который я использую, выглядит следующим образом:

e.Graphics.DrawLine(new Pen(Color.FromArgb(11, 118, 200), 2), x1, y1, x2, y2);

Это работает, однаковыглядит ужасно из-за неровностей и т. д. Могу ли я в любом случае рисовать сглаженные линии?

Из того, что я могу сказать, объект Graphics изначально не поддерживает это, но есть ли способ "обмануть" этот эффект, используякакая-то хитрость?

Ответы [ 3 ]

5 голосов
/ 19 января 2011

Быстрый трюк, если вы рисуете на однотонном фоне, вы можете нарисовать линию более толстым пером и цветом между цветом фона и цветом линии до фактической линии, например, при рисовании начерный фон:

e.Graphics.DrawLine(new Pen(Color.FromArgb(5, 59, 100), 3), x1, y1, x2, y2);
e.Graphics.DrawLine(new Pen(Color.FromArgb(11, 118, 200), 2), x1, y1, x2, y2);

Это добавляет «свечение» к линии (хотя даже на идеальных горизонтальных / вертикальных линиях).

2 голосов
/ 19 января 2011

Я чувствую твою боль.Несколько лет назад я делал нечто подобное для .NETCF и шел разными забавными путями.Закончилось больше работы, чем оно того стоило.Посмотрите на этот ужас:

http://freespace.virgin.net/hugo.elias/graphics/x_wuline.htm

http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/b34f56c4-585b-4ff5-ac7d-b6e2ae516ccf/

Кроме того, это может послужить некоторым ответом, но может быть полезной заменой системы WM GDI.

http://drawingcf.codeplex.com/

Этот вопрос привел меня к http://www.amanithvg.com/project.html, который предлагает OpenGL-подобную среду с библиотеками Windows CE.Возможно, это будет чрезмерное убийство, хотя бы на несколько строк.

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

1 голос
/ 11 февраля 2014

Найден этот XrossGDI + полный родной C #:

http://www.isquaredsoftware.com/XrossOneGDIPlus.php

...