Q&A

  • [질문] PaintBox 투명...
안녕하세요?

Paint Box를 투명하게 할일이 있어서
연구를 해봤는데, 쉽지 않네요.

혹시 PaintBox투명하게 하는 것 아시는 분
알려주시면 감솨드리겠습니다.

꾸벅~
1  COMMENTS
  • Profile
    소울해커 2008.10.07 19:49

    Paint Box를 투명하게 한다는게 무슨 의미인지...

    원래 그려지는 부분을 제외하곤 투명하지 않은가요? (그려지는 부분빼곤 뒤에부분이 잘 보이는데...;)

    procedure TForm1.FormPaint(Sender: TObject);
    begin
    Canvas.StretchDraw(Rect(0, 0, Width, Height), TBitmap(Image1.Picture.Graphic));
    PaintBox1.Canvas.Draw(0, 0, TBitmap(Image2.Picture.Graphic));
    end;

    Paint Box를 투명하게 하는게 아니라 그려진 부분에 알파블렌딩을 적용하시고자 하시는건가요?

    그거라면 대충 이렇게...

    procedure TForm1.FormPaint(Sender: TObject);
    var
    ABmp: TBitmap;
    bfBlend : _BLENDFUNCTION;
    begin
    Canvas.StretchDraw(Rect(0, 0, Width, Height), TBitmap(Image1.Picture.Graphic));
    ABmp := TBitmap.Create;

    with ABmp do
    begin
    try

    PixelFormat := pf24bit;
    Width := Image2.Width;
    Height := Image2.Height;
    Canvas.Draw(0, 0, TBitmap(Image2.Picture.Graphic));

    bfBlend.BlendOp := AC_SRC_OVER;
    bfBlend.BlendFlags := 0;
    bfBlend.SourceConstantAlpha := 80;
    bfBlend.AlphaFormat := 0;

    Windows.AlphaBlend(PaintBox1.Canvas.Handle, 0, 0, PaintBox1.Width, PaintBox1.Height, Canvas.Handle, 0, 0, Width, Height, bfBlend);

    finally
    if Assigned( ABmp ) then FreeAndNil( ABmp );
    end;
    end;

    end;