-2

少し問題があります.. Delphi Vcl アプリケーションをスキン化できる SkinEngine を開発しています。この目標のために、スキン データをホストするために新しいファイル形式 (mSkin) を開発しました。そのため、スキン ファイルには 2 つのヘッダーが含まれています。最初のヘッダーには、スキンで使用される色に関する情報が含まれ、2 番目には、スキン(透過性をサポートするために、ビットマップ タイプはアルファ チャネル ビットマップです)。私のコントロールでは、関数を使用してビットマップからオブジェクト ビットマップを抽出し(mSkin.Bitmap)、このビットマップをコントロールに描画します。問題は、ビットマップが形成されていない場合、ソース ビットマップをスケーリングするときに品質が低下することです。オブジェクト ビットマップのサイズはコントロール サイズに比例します (コントロール サイズが変更された場合 ==> ビットマップ サイズも変更されます)。 ここに画像の説明を入力

問題を解決するために vcl スタイルを読み取ろうとしましたが、非常に読みにくいようです。ビットマップをコピーして品質を維持する方法はありますか?

4

3 に答える 3

4

ビットマップを使用する場合、問題がなければ単純にスケーリングを行うことはできません。たとえば、1 ピクセルの境界線を 1 ピクセルの境界線のままにスケーリングする場合は、画像にベクターベースの形式を使用する必要があります。

于 2013-08-14T12:08:05.807 に答える
3

3x3 グリッドのように、それを 9 つの異なるビットマップに分割する必要があります。次に、中央のみを拡大縮小し、残りは同じサイズのままですが移動します。このリンクは Android 用ですが、同じ原則が適用されます。

ここに別のリンクがあります。これはフラッシュ用ですが、原理も説明しています。

于 2013-08-14T12:08:33.093 に答える
3

リサンプリング アルゴリズムを使用してみてください。

アップスケーリングについては、B-Spline がとても気に入っています。

あなたのような単純なコンテンツの場合、hqnx ファミリーは良い結果をもたらすことがあり、(リアルタイムであっても) レンダリングが非常に高速です。一部の Pascal ソース コードについては、このフォーラム スレッドを参照してください

このより一般的な質問も参照してください。

于 2013-08-14T17:12:09.507 に答える