我有一点问题..我正在开发一个允许Delphi Vcl应用程序被Skined的SkinEngine。为了这个目标,我开发了一个新的文件格式(mSkin)来托管我的皮肤数据。所以我的皮肤文件包含2个标题,第一个包含一些关于皮肤使用的颜色的信息,第二个包含由skin(位图类型是Alpha通道位图,以支持透明度)。在我的控制中,我使用一个函数从位图(mSkin.Bitmap)中提取对象位图,并将此位图绘制到我的控件上。问题是当位图没有成形时,我在缩放源位图时质量很差。对象位图的大小与控件大小成正比(当控制尺寸改变时==>位图也会改变。)
我曾尝试阅读vcl风格来解决问题..但似乎很难阅读。 有没有办法复制位图和维持质量?
答案 0 :(得分:4)
如果您使用位图,那么简单无法在没有问题的情况下进行缩放。如果你想缩放,例如一个像素的边框保持一个像素的边框,那么你必须为你的图像使用基于矢量的格式。
答案 1 :(得分:3)
您需要将其划分为9个不同的位图,例如3x3网格。然后你只缩放中间,其余的保持相同的大小,但移动。 This link适用于Android,但适用相同的原则。
这是another link。这适用于闪光灯,但它也解释了原理。
答案 2 :(得分:3)
尝试使用resampling algorithm。
对于升级,我非常喜欢B-Spline。
对于像你这样的简单内容,hqnx family有时会产生很好的效果,渲染速度非常快(即使是实时)。对于某些pascal源代码,you may take a look at this forum thread。