CompositionTarget.TransformToDevice содержит неожиданные значения матрицы, но почему? - PullRequest
1 голос
/ 12 июля 2011

В настоящее время я использую BOT PixelLab (Bag o 'Tricks) для управления ReorderListBox, но я заметил некоторые существенные замедления в mousedown элемента списка.

Я отследил его до способа, которым элемент управления создает DragPreviewAdorner, в частности, метод GetCurrentDPI, который реализован просто как:

Matrix m = PresentationSource.FromVisual(visual)
                               .CompositionTarget
                                 .TransformToDevice;
x = 96 / m.M11;
y = 96 / m.M22;

Дело в том, что для моих элементов списка M11 и M22 возвращаются в виде крошечных чисел, тем самым давая очень большой DPI (x = 100000 и y = 5500). Следовательно, вызывающий код в конечном итоге создает огромное растровое изображение в памяти, которое, в свою очередь, вызывает задержку при сборке мусора.

Мой вопрос: что может быть причиной этих, казалось бы, ошибочных значений в преобразовании? На экране все выглядит отлично. : - /

Спасибо.

...