画像処理にはGraphics32を使用しています。その機能を見ると、クリッピング マスクの適切な実装をまだ見ていないことに気がつきます。「クリッピング」という用語があちこちに出てきますが、それは別のことを指しているようです。
簡単に言えば、1 つのレイヤーが別のレイヤーへの「覗き穴」として機能する必要があります。レイヤー A はレイヤー B に投影する必要がありますが、レイヤー B が表示されている場合に限ります。(クリッピング マスクとは何かを再定義する必要はないと思います。)
提示したいのが他のレイヤーのビットマップだけである場合、それを行うのはそれほど難しくありません-このトリックを使用できます-しかし、物事を複雑にしているのは、レイヤーのビットマップが伝えないことですレイヤーによって表示される内容についての多く。レイヤーは次のいずれかです。
- (部分的に) 見えない (見えないとき)
- 移動/ストレッチ + オプションでリサンプリング
- 回転した
ビットマップには影響しません。
実際には、これに対する準備が整った実装はありませんか? これを自分で行うための提案はありますか?
進捗
Graphics32 のソースでいくつかの有用な要素を見つけました。たとえば、次の宣言を使用します。
type
TLayerAccess = class(TBitmapLayer);
保護されたメソッドにアクセスするTLayerAccess(ABitmapLayer).Paint(ABitmap32)
には、画面に描画するのとまったく同じように、このレイヤーだけをビットマップに描画するように呼び出します。