3

BitmapLayer次のコードを使用して、アンチエイリアス線を描画しました。

procedure TForm4.Button1Click(Sender: TObject);
var
  BL: TBitmapLayer;
begin
  BL:= TBitmapLayer.Create(ImgView.Layers);
  LayerPos:= Point(100, 100);
  CanvasWidth:= 100;
  CanvasHeight:= 100; 

  BL.Location:= FloatRect(
    LayerPos.X,
    LayerPos.Y,
    LayerPos.X + CanvasWidth ,
    LayerPos.Y + CanvasHeight
  );     

  with BL.Bitmap do
  begin
    SetSize(CanvasWidth, CanvasHeight);   
    DrawMode:= dmBlend;
    Clear($0000FF00);  
    LineAS(0, 0, 100, 80, clBlack32);   
  end
end;

以下の結果でわかるように、線の透明度ピクセルには緑の値があります。そしてそれは$0000FF00(で使われるClear()) によるものです。しかし、この色のアルファ チャネルがゼロであるということは、完全に透明であることを意味します。

Q: コードに問題はありますか? 私はどこか間違っていますか?

ここに画像の説明を入力

4

1 に答える 1

0

わかった。見つけた。私は使用する必要がありますCombineMode:= cmMerge;

with BL.Bitmap do
begin
  //...
  CombineMode:= cmMerge;
  DrawMode:= dmBlend;
  //...
end
于 2014-02-08T05:58:51.073 に答える