颜色alpha通道完全不透明

时间:2014-01-25 12:44:32

标签: delphi delphi-xe2 graphics32

我只是使用以下代码在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()中使用)。但是这种颜色的alpha通道是零意味着完全透明!

问:我的代码有问题吗?我错了吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

行。我找到了。我必须使用CombineMode:= cmMerge;

with BL.Bitmap do
begin
  //...
  CombineMode:= cmMerge;
  DrawMode:= dmBlend;
  //...
end