我制作了一个带有透明表单的小型 EXE,上面有一个 TImage。为了使我的表单透明,我使用以下代码:
Function TForm1.CombineRegions (FrmX , FrmY :Integer;CtrlComp : TControl;Var RegHandle : THandle) : Boolean;
Var
CtrlHandle : THandle;
CtrlLeft,
CtrlTop,
CtrlWidth,
CtrlHt : Integer;
begin
Result := False;
CtrlHandle := 0;
FrmX := 0;
FrmY := 0;
Try
CtrlLeft := CtrlComp.Left;
CtrlTop := CtrlComp.Top;
CtrlWidth := CtrlComp.Width;
CtrlHt := CtrlComp.Height;
Except
Exit;
End;
Try
FrmX:=0;
FrmY:=0;
FrmX := FrmX + CtrlLeft;
FrmY := FrmY + CtrlTop;
CtrlHandle := CreateRectRgn(FrmX, FrmY, FrmX + CtrlWidth, FrmY + CtrlHt) ;
CombineRgn(RegHandle, RegHandle, CtrlHandle, RGN_OR) ;
Except
End;
End;
它所做的是首先使所有表单消失,然后根据我想要在表单上的哪些控件,我将调用上述函数并且只绘制该区域。现在我的 TImage 有一个图像,它有一些背景颜色。
如您所见,图像有一些背景。我希望绘制我的 TImage 以便只绘制里面的位图,而不是整个区域。可以做到吗?提前致谢。