使用 WiX 时,我可以阻止我的图像被缩放以适合我的显示设置吗?
Posted
技术标签:
【中文标题】使用 WiX 时,我可以阻止我的图像被缩放以适合我的显示设置吗?【英文标题】:Can I stop my images from being scaled to fit my display settings when using WiX? 【发布时间】:2013-10-11 13:21:33 【问题描述】:我遇到了与this question 中讨论的问题类似的问题。
我创建了一个自定义WiXUIBannerBmp
图像,尺寸为上述链接中建议的尺寸(493 像素 x 58 像素),但它看起来很糟糕,因为它仍在缩放。我屏幕上的实际尺寸似乎约为 616 像素 x 73 像素。 616 = 493 * 1.25 和 73 = 58 * 1.25(大约)。你猜怎么了?在我的显示设置中,我将屏幕缩放 125%。
有人知道解决这个问题的方法吗?我可以,例如:
检测分辨率比例并为不同的比例提供不同的文件? 在我的图像上设置“不缩放”标志? 提供可可靠缩放的图像格式,即不是 bmp 或 jpg? 还有其他想法吗?非常感谢
更新
我发现这个问题的唯一参考是this post on SourceForge,但我找不到 Rob 在他的回复中提到的错误。有谁知道是否有人提出过,是否采取了行动?
【问题讨论】:
【参考方案1】:您可以使用自定义操作来读取屏幕分辨率并动态填充图像控件,这样:
[CustomAction]
public static ActionResult GenInstallationReview(Session session)
// Insert Control Bitmap in Control table (MSI database).
Record record = session.Database.CreateRecord(12);
record.SetString(1, "Dialog_Review"); // Dialog_
record.SetString(2, "Bitmap_Background"); // Control
record.SetString(3, "Bitmap"); // Type
record.SetInteger(4, 0); // X
record.SetInteger(5, 0); // Y
record.SetInteger(6, 518); // Width
record.SetInteger(7, 392); // Height
record.SetInteger(8, 1); // Attributes
record.SetString(9, ""); // Property
record.SetString(10, "Binary_Background"); // Text
record.SetString(11, ""); // Control_Next
record.SetString(12, ""); // Help
// Queries the Control table to check if the control was already created.
List<string> resultList = new List<string>();
resultList = (List<string>)session.Database.ExecuteStringQuery(
"SELECT `Control` FROM `Control` WHERE `Control` = 'Bitmap_Background'");
// Insert or update the table based on if the control was already created.
if (resultList.Count < 1)
session.Database.Execute(
"INSERT INTO `Control` (`Dialog_`, `Control`, `Type`, `X`, `Y`, " +
"`Width`, `Height`, `Attributes`, `Property`, `Text`, " +
"`Control_Next`, `Help`) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) TEMPORARY", record);
else
session.Database.Execute(
"UPDATE `Control` SET `Dialog_`=?, `Control`=?, `Type`=?, `X`=?, " +
"`Y`=?, `Width`=?, `Height`=?, `Attributes`=?, `Property`=?, " +
"`Text`=?, `Control_Next`=?, `Help`=? WHERE " +
"`Control`='Bitmap_Background'", record);
return ActionResult.Success;
这里有一个警告,如果图像填满了对话框(例如背景图像),z-order 将会被打乱。您需要进行一些调整:
使用自定义操作创建所有控件;或 更改Control_Next
以使您的动态控制成为焦点循环的一部分(尽管未使用)并更新对话框表中的Control_First
以使用它。
【讨论】:
如何使用 WIX 在 Dialog 表中设置Control_First
?
@linquize 你应该可以像上面一样设置它。如果你有对话框名称和控件名称,那么它是一个简单的更新。以上是关于使用 WiX 时,我可以阻止我的图像被缩放以适合我的显示设置吗?的主要内容,如果未能解决你的问题,请参考以下文章
Android Webview - 使用一个 loadUrl 缩放图像以正确适合屏幕