-2

我有一个小问题.. 我正在开发一个允许 Delphi Vcl 应用程序皮肤的 SkinEngine。为了这个目标,我开发了一种新的文件格式(mSkin)来托管我的皮肤数据。所以我的皮肤文件包含 2 个标题,第一个包含有关皮肤使用的颜色的一些信息,第二个包含使用的位图皮肤(位图类型是 Alpha 通道位图以支持透明度)。在我的控件中,我使用一个函数从位图(mSkin.Bitmap)中提取对象位图并将此位图绘制到我的控件上。问题是,当位图未成形时,我在缩放源位图时质量很差。对象位图的大小与控件大小成正比(当控件大小更改时 ==> 位图也发生了变化。) 在此处输入图像描述

我曾尝试阅读 vcl 样式来解决问题.. 但它似乎很难阅读。有没有办法复制位图并保持质量?

4

3 回答 3

4

如果您使用位图,您将无法在没有问题的情况下进行缩放。如果您想在例如一像素边框保持一像素边框的情况下进行缩放,那么您必须为您的图像使用基于矢量的格式。

于 2013-08-14T12:08:05.807 回答
3

尝试使用重采样算法

对于升级,我非常喜欢 B-Spline。

对于像您这样的简单内容,hqnx 系列有时会产生良好的效果,并且渲染速度非常快(即使是实时渲染)。对于一些帕斯卡源代码,你可以看看这个论坛帖子

另请参阅这个更一般的问题

于 2013-08-14T17:12:09.507 回答
3

您需要将其划分为 9 个不同的位图,例如 3x3 网格。然后你只缩放中间,其余的保持相同的大小但移动。此链接适用于 android,但适用相同的原则。

这是另一个链接。这是针对flash的,但也说明了原理。

于 2013-08-14T12:08:33.093 回答