18.07.2010
Baby2Computer v2.0
Дополнительные функции легко реализуются изменением этой таблички, и возможно добавлением нескольких других. В реальном Baby2Computer v2.0 у нас имеется 5 таблиц, из которых 3 предназначены для поиска Baby2Computer v2.0. WPF использует векторную графику Baby2Computer v2.0 формат отрисовки, это означает Baby2Computer v2.0 специальным образом сохраняется и передается подсистемы вывода набор инструкций, которые описывают как Baby2Computer v2.0 необходимо выполнить отрисовку, используя графические примитивы, такие как набор линий, кривых и других команд. Это позволяет легко осуществлять масштабирование без потери качества. Объекты Shape представлены Baby2Computer v2.0 примитивов Rectangle, Baby2Computer v2.0 и т. И легко могут быть использованы непосредственно в разметке xaml, поддерживают выравнивание и Baby2Computer v2.0 событий, однако производительность Baby2Computer v2.0 при отрисовке Baby2Computer v2.0 большого количества таких объектов оставляет Babylon translator 20.11Babylon Translator 20.14 желать лучшего. Объекты DrawingVisual обеспечивают максимальную производительность при отрисовке фигур, картинок или текста. Это достигается за счет того, что они не поддерживают компоновки и событий. Для их использования Baby2Computer v2.0 создать контейнер, унаследованный от класса FrameworkElement. Для хранения объектов DrawingVisual нужно использовать класс VisualCollection. Для обеспечения компоновки контейнера Baby2Computer v2.0 перекрыть две простых функции. public class BaseRenderer : FrameworkElement member for optimize protected VisualCollection Baby2Computer v2.0; protected override int VisualChildrenCount get return ObjectChildrenList. Count; protected override Visual GetVisualChild int index return ObjectChildrenList index ; Созданные объекты DrawingVisual должны быть помещены в коллекцию ObjectChildrenList для того чтобы графическая подсистема WPF смогла осуществить их отрисовку. Причем, для максимального быстродействия необходимо использовать функцию Add и добавлять объекты последовательно. В ином случае, например при использовании функции Insert осуществляется пересчет визуального родителя у всех элементов с индексом, большим чем индекс вставки. В этом легко убедиться использую любой профилировщик, например jetBrance 5 или посмотрев исходные коды, например, используя Reflector 6 . Итак, вначале создается объект MapDrawingVisual, который является наследником объекта DrawingVisual и имеет ссылку на бизнес объект карты, для выполнения процедуры HitTesting проверка попадания . Затем получается стиль для отрисовки объекта, создается геометрия и производится сама отрисовка. private void CreateDrawing MapElement element, bool closed MapDrawingVisual drawingVisual new MapDrawingVisual ; drawingVisual. MapObject; DrawingContext drawingContext drawingVisual. GetStyle element ; Geometry geometry CreateBaseGeometry element, closed ; drawingContext. Close ; AddDrawingVisual drawingVisual ; private void AddDrawingVisual DrawingVisual drawingVisual ObjectChildrenList. Add drawingVisual ; Рисование простых графических примитивов осуществляется с помощью класса StreamGeometry, который обеспечивает максимальную производительность. Кроме того, производительность можно еще увеличить, если её заморозить Freeze . у нас объекты Baby2Computer v2.0 не предназначены для модификации. private static Geometry CreateGeometry Point points, bool closed, bool freeze Geometry geometry new StreamGeometry ; using StreamGeometryContext ctx StreamGeometry geometry . PolyLineTo points, true, false ; Freeze the geometry make it unmodifiable for additional performance benefits. Freeze ; return geometry; Кисти, перья, текст, перемещение объектов и прочие вопросы оптимизацииВ силу специфики приложения Baby Diary v1.0 beta 7 приходится выполнять отрисовку объектов разных типов: дома, реки, дороги и прочее. К сожалению, простейшее решение, приходящее на ум в этом случае, а именно использование одного объекта кисти для одного типа объекта, вызывает значительное замедление работы системы. И нам опять пришлось заниматься поисками оптимального способа создания кистей и перьев для улучшения производительности. Создание новой кисти непосредственно перед использованием также не привело к значительному улучшению производительности.
Babylon Pro v5.0.4 r14 Babarosa Gif Animator v1.8b Baby2Computer v1.0
|