1
我使用DWM API在我的WPF应用程序显示其它窗口的缩略图不正确的目标位置。在大多数电脑上它工作正常,但在某些电脑上,我的缩略图在应用程序中的位置偏移较小(它移动了几个像素左+增加了约30%)。DWM API:在某些计算机
要创建我使用这个代码(dwmapi.dll文件)的缩略图关系:
if (DwmRegisterThumbnail(IntPtr dest, IntPtr src, out IntPtr thumb) != 0) return;
PSIZE size;
DwmQueryThumbnailSourceSize(m_hThumbnail, out size);
DWM_THUMBNAIL_PROPERTIES props = new DWM_THUMBNAIL_PROPERTIES
{
fVisible = true,
dwFlags = DwmApiConstants.DWM_TNP_VISIBLE | DwmApiConstants.DWM_TNP_RECTDESTINATION | DwmApiConstants.DWM_TNP_OPACITY,
opacity = 0xFF,
rcDestination = destinationRect
};
DwmUpdateThumbnailProperties(m_hThumbnail, ref props);
对于我的应用程序定位我使用的是帆布,其位置我使用获得:
var generalTransform = PreviewCanvas.TransformToAncestor(App.Current.MainWindow);
var leftTopPoint = generalTransform.Transform(new Point(0, 0));
return new System.Drawing.Rectangle((int)leftTopPoint.X, (int)leftTopPoint.Y, (int)PreviewCanvas.ActualWidth, (int)PreviewCanvas.ActualHeight);
您铸造英寸像素。当视频适配器DPI未设置为96dpi(100%)时,这不起作用。 Google“wpf将英寸转换为像素”,首先打中看起来不错。 –