| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Соединение 2х линий не идеальное |
| Автор: Anyone 18.10.2009, 12:36 | ||
| В моем графическом редакторе объекты канваса имеют выводы в виде линий, через которые они соединяются линиями связей. Но проблема в том, что при опрежеленных положениях объекта, линии связи имеют не четкие границы, иногда толщина больше чем заданных 2 пикселя и в местах соедиений выводов с линиями зачастую просматривается разница в толщине. Везде где только можно я выставил SnapsToDevicePixels="True". Линии связи биндятся к центру коннектора вывода, и если это значение округливать до целого, то проблема не решается. Выводы находятся в ячейках грида с выравниванием по центру по вертикали. Линия связи имеет такой шаблон:
Как можно решить проблему? |
| Автор: rooks 19.10.2009, 09:57 |
| Скриншот бы не помешал |
| Автор: Anyone 19.10.2009, 10:36 |
| Скриншет сделан при увеличении масштаба, при масштабе 100% еще терпимо. Красным показаны проблемные участки. |
| Автор: math64 19.10.2009, 11:43 |
| По-видимому неправильно вычисляются координаты промежуточных точек. Запиши PathGeometry в файл (можно с помощью XamlWriter сохранить ConnectionPath) и проверь. |
| Автор: rooks 21.10.2009, 15:08 |
| Это все хваленые пикcели типа double. Не уверен что можно окончательно победить, но можно попробовать поиграться с http://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.edgemode.aspx. Или попытаться округлять координаты в Path, где это можно. |
| Автор: Anyone 21.10.2009, 16:21 |
| rooks, Выставил RenderOptions.EdgeMode="Aliased" для выводов и линии связи. Стало значительно лучше, границы четкие. Но при определенных значениях масштаба линия иногда не совсем совпадает с выводом, ну тут уже врядли что-то поделаешь, это погрешности вычисления координат. Спасибо за ответ. |