怎么设置Panel透明
如何设置Panel透明
创建Panel 根据属性的改变来改变Panel的透明度等。谢谢
------解决方案--------------------
up
------解决方案--------------------
mark
------解决方案--------------------
设置?没这么简单吧。
我模仿RZ里的做过。
------解决方案--------------------
自己拓展个控件就可以了
很简单
------解决方案--------------------
MARK下,我也想知道
------解决方案--------------------
http://topic.****.net/u/20091211/16/cfc6ceff-4b60-4f47-9331-4dec63aa6d7c.html
你可以自己扩展,支持图片显示等等....
------解决方案--------------------
给个透明的panel控件你
创建Panel 根据属性的改变来改变Panel的透明度等。谢谢
------解决方案--------------------
up
------解决方案--------------------
mark
------解决方案--------------------
设置?没这么简单吧。
我模仿RZ里的做过。
------解决方案--------------------
自己拓展个控件就可以了
很简单
------解决方案--------------------
MARK下,我也想知道
------解决方案--------------------
http://topic.****.net/u/20091211/16/cfc6ceff-4b60-4f47-9331-4dec63aa6d7c.html
你可以自己扩展,支持图片显示等等....
------解决方案--------------------
给个透明的panel控件你
- Delphi(Pascal) code
unit Glass; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TGlassStyle = ( gsBlackness, gsDstInvert, gsMergeCopy, gsMergePaint, gsNotSrcCopy, gsNotSrcErase, gsPatCopy, gsPatInvert, gsPatPaint, gsSrcAnd, gsSrcCopy, gsSrcErase, gsSrcInvert, gsSrcPaint, gsWhiteness); TGlass = class(TCustomControl) private FColor: TColor; FStyle: TGlassStyle; FOnPaint: TNotifyEvent; procedure SetColor(Value: TColor); procedure SetStyle(Value: TGlassStyle); procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED; procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; protected Buffer: TBitmap; procedure CreateParams(var Params: TCreateParams); override; procedure Paint; override; procedure Resize; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Canvas; published property Align; property Anchors; property AutoSize; property BiDiMode; property BorderWidth; property Color: TColor read FColor write SetColor; property Ctl3D; property Enabled; property Style: TGlassStyle read FStyle write SetStyle default gsSrcAnd; property Visible; property OnClick; property OnDblClick; property OnEnter; property OnExit; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnResize; property OnPaint: TNotifyEvent read FOnPaint write FOnPaint; end; procedure Register; implementation procedure Register; begin RegisterComponents('Croco', [TGlass]); end; function GlassStyleToInt(gs: TGlassStyle): LongInt; begin case gs of gsBlackness : Result := cmBlackness; gsDstInvert : Result := cmDstInvert; gsMergeCopy : Result := cmMergeCopy; gsMergePaint : Result := cmMergePaint; gsNotSrcCopy : Result := cmNotSrcCopy; gsNotSrcErase: Result := cmNotSrcErase; gsPatCopy : Result := cmPatCopy; gsPatInvert : Result := cmPatInvert; gsPatPaint : Result := cmPatPaint; gsSrcAnd : Result := cmSrcAnd; gsSrcCopy : Result := cmSrcCopy; gsSrcErase : Result := cmSrcErase; gsSrcInvert : Result := cmSrcInvert; gsSrcPaint : Result := cmSrcPaint; gsWhiteness : Result := cmWhiteness; else Assert(True, 'Error parameter in function GlassStyleToInt'); end; end; constructor TGlass.Create(AOwner: TComponent); begin inherited Create(AOwner); Buffer := TBitmap.Create; ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents, csDoubleClicks, csReplicatable]; Width := 100; Height := 100; FStyle := gsSrcAnd; ParentCtl3d := False; Ctl3D := False; ParentColor := False; FColor := clWhite; end; destructor TGlass.Destroy; begin Buffer.Free; inherited Destroy; end; procedure TGlass.Paint; var R: TRect; rop: LongInt; begin R := Rect(0, 0, Width, Height); Buffer.Width := Width; Buffer.Height := Height; Buffer.Canvas.Brush.Style := bsSolid; Buffer.Canvas.Brush.Color := FColor; Buffer.Canvas.FillRect(Rect(0, 0, Width, Height)); rop := GlassStyleToInt(FStyle); StretchBlt(Buffer.Canvas.Handle, 0, 0, Width, Height, Canvas.Handle, 0, 0, Width, Height, rop); if Ctl3D then DrawEdge(Buffer.Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT); Buffer.Canvas.Pen.Mode := pmCopy; Buffer.Canvas.Pen.Style := psSolid; Canvas.Draw(0, 0, Buffer); if Assigned(FOnPaint) then FOnPaint(Self); end; procedure TGlass.SetColor(Value: TColor); begin if Value <> FColor then begin FColor := Value; RecreateWnd; end; end; procedure TGlass.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle + WS_EX_TRANSPARENT; end; procedure TGlass.WMWindowPosChanging(var Message: TWMWindowPosChanging); begin Invalidate; inherited; end; procedure TGlass.WMEraseBkgnd(var Message: TMessage); begin Message.Result := 0; end; procedure TGlass.Resize; begin Invalidate; inherited; end; procedure TGlass.CMCtl3DChanged(var Message: TMessage); begin inherited; RecreateWnd; end; procedure TGlass.SetStyle(Value: TGlassStyle); begin if Value <> FStyle then begin FStyle := Value; RecreateWnd; end; end; end.