私は画像処理にGraphics32を使用しています。その機能を見ると、クリッピングマスクが適切に実装されているかどうかはまだわかりません。私はここでそこにポップアップ "クリッピング"という言葉が表示されますが、それは別のものを参照しているようです。Graphics32を使用してクリッピングマスクを作成する
単純に言えば、別の層に「覗き穴」として機能するレイヤーが必要です。レイヤーAはレイヤーBに投影されるべきですが、レイヤーBのみが表示されます。 (私はクリッピングマスクが何であるかを再定義する必要はないと思う)
私が提示したいと思っている他のレイヤーのビットマップだけだったら、そうするのは難しいだろう。 this trickを使用してください。しかし、複雑なことは、レイヤのビットマップがレイヤによって表示されるものをあまり伝えていないことです。層であることができる:
- (部分的に)不可視(場合ビューのうち)
- +随意延伸/移動
- をリサンプリングし、そのビットマップでない効果を
回転。
実際にはこのための準備ができていないのですか?これを自分自身で行うための提案はありますか?
進捗
私はGraphics32のソース内のいくつかの有用な要素を発見しました。たとえば、この宣言を使用:type
TLayerAccess = class(TBitmapLayer);
は、保護されたメソッドへのアクセスを得るために、私はまさにそれが画面に同じように、ビットマップに塗装だけで、この層を持っているTLayerAccess(ABitmapLayer).Paint(ABitmap32)
を呼び出すことができます。
graphics32は32ビットのビットマップを単独で使用し、ブレンドに使用されるビットマップのアルファチャンネルです。私はあなたが使用できる別のアルファフィールド(例えば、クリッピングエリアなど)を知らない。あなたは別の「マスターアルファ」しか持っていません。私は...するだろう。 1.アルファビットマップ(すべて白、アルファチャンネルはビットマップ座標のクリッピングパス)を決定し、元のビットマップにこのビットマップを掛けてビットマップをデスティネーションにレンダリングします。 –
レイヤBのどの部分が表示されるかはどのように定義しますか? – iamjoosy
@iamjoosyコンテナ(TImage32)に描かれているところで、どこで見ることができますか? –