C# Windows 8.1无端扩展WinForms应用程序

C# Windows 8.1无端扩展WinForms应用程序,c#,windows,winforms,tablet,C#,Windows,Winforms,Tablet,明白了这一点,你将成为我的编程英雄: 我的客户端使用运行在Windows 8.1上的Surface Pro平板电脑 该应用程序是基于WinForms的桌面应用程序 当应用程序试图打开TIFF图像时,只有在那时,Windows才会决定放大应用程序(称为显示缩放),结果是应用程序中的所有内容突然变得非常小,以至于您根本看不到或无法使用它。因此,我们希望避免这种缩放。(从“兼容性”选项卡上关闭它更糟糕) 现在是有趣的部分。代码如下所示: Stream stream = new MemoryStream

明白了这一点,你将成为我的编程英雄:

我的客户端使用运行在Windows 8.1上的Surface Pro平板电脑 该应用程序是基于WinForms的桌面应用程序

当应用程序试图打开TIFF图像时,只有在那时,Windows才会决定放大应用程序(称为显示缩放),结果是应用程序中的所有内容突然变得非常小,以至于您根本看不到或无法使用它。因此,我们希望避免这种缩放。(从“兼容性”选项卡上关闭它更糟糕)

现在是有趣的部分。代码如下所示:

Stream stream = new MemoryStream(File.ReadAllBytes(fileName));

// At this point the app looks ok...
bitmap = LoadTiffFromStream(stream);

private static Bitmap LoadTiffFromStream(Stream stream)
{
// Here before any code executes, the app is scaled
如您所见,我们将一些文件加载到流中,将流传递给一个方法,然后在执行该方法的任何代码之前,该应用程序将被缩放。这只会发生在TIFF图像上,就好像应用程序不知何故知道流包含TIFF数据一样

一些测试:

  • 放在空测试应用程序中的相同代码不会产生相同的行为
  • TIFF文件不比加载良好的其他文件大或小,它与流大小、文件名或任何文件系统权限无关
  • 我已经验证了这两行之间没有执行其他代码
  • 它绝对每次都会发生,仅适用于TIFF图像,适用于任何TIFF图像,并且在执行任何与TIFF格式有关的代码之前(我只是向方法发送一个流!)

  • 我想不出来。你能吗?

    你有没有尝试过不同的加载图像的方法

    Bitmap img = Image.FromFile(@"MyImage.tif").Clone() as Bitmap;
    

    使用帮助吗?我还没有测试过这个特定的问题,但是当我禁用显示缩放时,整个UI都被破坏了,所以这不是我们的选项。