有一个启用了DPI支持的Windows窗体应用程序。当我更改显示缩放比例并再次运行该应用程序时,以下标签正确对齐。我需要根据某些情况更改其位置,所以我在C中设置了lbl_multi_component_brine_的Location属性。在这种情况下,DPI支持由于某种原因不起作用。标签总是显示在那个位置,无论显示比例如何。这是否意味着DPI支持只在资源文件中指定位置时才起作用?这是否意味着我应该考虑DPI来计算坐标,并在C中设置,或者有一些解决方案将跳过该计算。
<data name="lbl_multi_component_brine_.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbl_multi_component_brine_.Location" type="System.Drawing.Point, System.Drawing">
<value>19, 10</value>
</data>
<data name="lbl_multi_component_brine_.Size" type="System.Drawing.Size, System.Drawing">
<value>92, 13</value>
</data>
<data name="lbl_multi_component_brine_.TabIndex" type="System.Int32, mscorlib">
<value>148</value>
</data>
<data name="lbl_multi_component_brine_.Text" xml:space="preserve">
<value>Brine</value>
</data>
<data name=">>lbl_multi_component_brine_.Name" xml:space="preserve">
<value>lbl_multi_component_brine_</value>
</data>
<data name=">>lbl_multi_component_brine_.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name=">>lbl_multi_component_brine_.Parent" xml:space="preserve">
<value>panel_mc_brine_</value>
</data>
<data name=">>lbl_multi_component_brine_.ZOrder" xml:space="preserve">
<value>0</value>
</data>
1条答案
按热度按时间tsm1rwdh1#
我在C++中每次设置坐标时都会考虑DPI,并使用以下函数对其进行转换,从而解决了这个问题: