- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用以下控件在 winforms 中加载图像。
https://www.codeproject.com/Articles/43265/ImageListView
(或)
https://github.com/oozcitak/imagelistview
在 1080P 15"笔记本电脑上似乎存在一些与此控件相关的缩放问题,在 24"1080P 显示器上无法重现
我最近注意到表单缩放发生了一件奇怪的事情。它发生在直接从 GitHub 和我自己的应用程序中下载的主解决方案中。我的 PC 显示设置设置为将显示缩放到 125%(右键单击桌面 -> 显示设置 -> 更改文本、应用程序和...的大小)
当我开始调试时,表单加载 - 正确缩放。但是,只要我单击 TreeView 中包含图像的文件夹,就会加载图像,并且表单会缩小到 100%。因此整个窗体似乎立即缩小,而 Windows 的其余部分仍为 125%。
我不确定这是 Windows 还是 .Net Framework 的错误,或者只是控件的实现方式。或者可能有一个我不知道的属性需要更改?
如有任何帮助/建议,我们将不胜感激!
更新:
使用 DpiAware 选项后
不使用 DpiAware 选项
最佳答案
我已经能够重现这个问题,这有点奇怪。正如我所怀疑的那样,该应用程序未声明为 DPI 感知并将其设置为 DPI 感知解决了表单大小更改的问题。这可以通过向项目添加 list 文件来完成(项目菜单->添加新项->常规选项卡->选择“应用程序 list 文件”。然后将以下内容添加到文件中:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
这解决了问题,但我很好奇为什么代码会以这种方式运行。该过程以 DPI 不感知开始,在关闭图像选择对话框后,它以某种方式切换为 DPI 感知过程。可以使用 SysInternal 的 Process Explorer 应用程序进行观察。我的第一个想法是搜索对 SetProcessDpiAwareness 的调用。 , 但没有产生任何结果。深入研究代码发现调用了 MetadataExtractor.cs
中的 InitViaWpf
方法。此方法和其他方法利用 System.Windows.Media.Imaging
命名空间中的类。看起来,这种 WPF 库的使用会导致应用程序变成 DPI 感知,就像 WPF 应用程序默认是 DPI 感知的一样。为名为 USEWIC 的 ImageListView
项目声明了一个条件编译符号,它控制 WPF 类的这种用法。在项目的属性构建配置中删除此符号将阻止它们的使用,并且可以用作替代解决方案,并且可能比将 Winform 应用程序声明为 DPI 感知更可取,但我没有时间进一步研究这个库。
编辑:通过创建 BitmapFrame 的实例可以轻松复制此行为在未标记为 DPI 感知的 Winform 应用程序中。
using System.Windows.Forms;
using System.IO;
using System.Windows.Media.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (Stream strm = File.OpenRead("someimage.jpg"))
{
BitmapFrame frame = BitmapFrame.Create(strm, BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.None);
}
}
}
}
编辑 2:DPI 感知 winform 缩放程序。
第 1 步:在设计器中,将 AutoScaleMode 属性设置为 Inherit。我知道 None 有意义,但 Inherit 是真正的默认设置。
第 2 步:修改窗体的构造函数以使用 Dpi 或字体自动缩放。这样做是为了防止设计者记录不正确的 AutoScaleDimensions。
public Form1()
{
InitializeComponent();
// Select either Dpi or font scaling
this.AutoScaleDimensions = new SizeF(96, 96);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
//this.AutoScaleDimensions = new System.Drawing.SizeF(6.0F, 13.0F);
//this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
编辑 3:要在使用 WPF 库的 DPI 未知应用程序上维护 DPI 虚拟化(防止自动切换到 DPI 感知),请在 app.manifest 文件中包含 dpiAware
部分,但明确将其设置为 false。
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
</windowsSettings>
</application>
关于c# - 使用自定义 ImageListView 控件后出现表单收缩问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437903/
我对 ScalaCheck(以及整个 Scala)相当陌生,所以这可能是一个相当简单的解决方案 我正在使用 ScalaCheck 为 AST 生成测试并验证编写器/解析器是否工作。我有这些文件 AST
我首先创建一个特定大小的 JTextArea。用户可以在其中添加文本,但如果它变得太长(垂直或水平),它将被截断。我希望 JTextArea 自动扩展或收缩(用于删除文本)。 我将来可能会允许用户更改
我正在学习如何在浏览器更改大小时调整 div 元素的大小。我希望我的 slider (参见 Fiddle)始终显示 10 张幻灯片,即使浏览器变小(参见下图)也是如此。 目标: 我能想到的实现这一点的
嗨,我在使用 css 面板时遇到了一些问题,我有点想寻求帮助,我的代码运行良好,但是如果用户让浏览器缩小尺寸,面板就会出现在文本下面,这就是我的意思意思是: 这是正常浏览器大小下的样子: 如果用户将浏
我正在研究和实现事件轮廓的贪婪算法,如 Donna Williams 的论文 - 事件轮廓和曲率估计的快速算法中所述。 与另一种实现(Kass 等人的实现)相比的优势之一应该是沿等高线曲线的点均匀分布
在 PHP 中,如何复制 tinyurls 的扩展/收缩功能,就像在 search.twitter.com 上一样? 最佳答案 如果你想找出一个 tinyurl 的去向,使用 fsockopen 在端
有java.io.ZipInputStream膨胀和java.io.ZipOutputStream这会泄气。 但有时我不希望这样。有时,当使用接受 InputStream 的第三方 API 时,我想要
我试图做到这一点,以便在选择文件后,显示文件路径的文本字段会自动收缩/扩展以适合路径。 JFileChooser fileChooser = new JFileChooser(); if (fileC
我有两个 flexbox,它们在高度变化时收缩,嵌套内容重叠。 如何防止这种情况? 最佳答案 just add flex-shrink:0 to your element and the flexbo
想要逐渐“打开”和“关闭”表格中的行,适本地向下推或拉起下面的行。 我能够通过使用 transition 进行计时和使用 transform 进行大小调整来使 div 扩展/收缩(无法使用 heigh
我有一个10列24行的表,可以存储一个值,也可以是=0。它们被称为msg1,msg2...直到msg10。我正在编写一个查询,用 0 而不是任何字段中的特定值来更新此表。 所以我写了(59是一个测试值
有谁知道缩小/压缩 db4o 数据库的方法吗? 最佳答案 压缩/收缩是什么意思?缩小现有数据库?还是要压缩数据库? 其中一个角色是 defragmentation .这将释放数据库中未使用的空间。删除
我正在使用 flexbox 来布局页面,因为 growing 行为很有用。但我想完全防止收缩行为。 无论如何要管理这个? 示例代码: This one should gr
我是 jQuery/Javascript 的新手,甚至是通过缩小的 jQuery/Javascript 进行搜索的新手。 我正在尝试重新创建我在 Materialize 框架的表单组件中找到的一些功能
我有一个对象表及其类型,如下所示: objectType | object 107 Boeing 107 Airbus 323 Audi 323
我正在尝试使用以编程方式构建的 TableLayout 将 20x20 表格放入 View 中。 setStretchAllColumns/setShrinkAllColumns 方法非常适合压缩所有
我有一个 QDialog 和一个 QVBoxLayout 控制它的高度。 这个主要的 QVBoxLayout 由一个或多个 QVBoxLayout child 组成,后面是一些其他小部件。当我添加额外
如何缩小任意(未指定)宽度的居中图像周围的 anchor (绿色边框)?换句话说,我想要绿色边框居中的秒框,就像第一个一样。没有 float ,没有绝对定位。 移除行 (A) 中心,但 anchor
我正在制作一款安卓游戏。我在 Galaxy sII 上测试我的应用程序。我取得了很大进步。不幸的是,我忽略了对其他设备进行测试。我知道我会遇到不同类型设备的不同分辨率问题。但我认为我可以通过安排我的坐
如果 GUI 设计人员使用特定设备屏幕尺寸作为引用点提供 iOS 设计,那么如果应用程序在不同设备上运行,如何使字体扩展或收缩? 即假设设计者提供了一个以 iPhone 8 屏幕尺寸为引用的单一设计,
我是一名优秀的程序员,十分优秀!