Wpf CompositionTarget.TransformToDevice包含意外的矩阵值,但为什么?

Wpf CompositionTarget.TransformToDevice包含意外的矩阵值,但为什么?,wpf,dpi,Wpf,Dpi,我目前正在使用PixelLab的BOT(Bag o'Tricks)进行ReorderListBox控制,但我注意到列表项鼠标向下移动时出现了一些严重的减速 我已经追踪到控件创建其DragPreviewAdorner的方式,特别是GetCurrentDPI方法,其实现方式如下: Matrix m = PresentationSource.FromVisual(visual) .CompositionTarget

我目前正在使用PixelLab的BOT(Bag o'Tricks)进行
ReorderListBox
控制,但我注意到列表项鼠标向下移动时出现了一些严重的减速

我已经追踪到控件创建其
DragPreviewAdorner
的方式,特别是
GetCurrentDPI
方法,其实现方式如下:

Matrix m = PresentationSource.FromVisual(visual)
                               .CompositionTarget
                                 .TransformToDevice;
x = 96 / m.M11;
y = 96 / m.M22;
问题是,对于我的列表项,
M11
M22
作为微小的数字返回,从而给出非常大的DPI(x=100000,y=5500)。因此,调用代码最终会创建一个巨大的内存位图,这反过来会在垃圾收集时造成延迟

我的问题是:在转换过程中,是什么导致了这些看似错误的值?屏幕上一切看起来都很好-/


谢谢。

我开始认为调试器一定在变量值方面对我撒谎,因为我现在不能重复这些数字了。但是,调用
RenderTargetBitmap
ctor仍然需要很长时间,尽管位图的大小非常合理(约1000 x 60)。不管怎样,它似乎触发了垃圾收集。