描述;在TImgEdit控件上放一个TRzPanel,设置TRzPanel为透明.TImgEdit载入tif图象文件后,TRzPanel并没有透明;拖动TImgEdit的滚动条,TRzPanel也没有透明。问题:在TImgEdit控件上放置一个什么样的Panel,可以使这个Panel透明显示TImgEdit控件载入的tif图象。谢谢!!!
解决方案 »
- 用OLE方式访问Excel的问题,请教?
- 那位能帮忙解释一下ActiveX单元中定义的IDataObject,IOleClientSite,IOleObject接口都是做什么用的?(在线)
- spcomm串口操作的问题,再解决不了,偶要失业了...
- QReport报表问题
- 学DELPHI6 买什么书好?
- ××××opendialog中多选,怎么得到多选的文件信息×××××
- 哪位大哥能分別給出"移動,復制一個文件"的代碼.如文件test.txt從d:\temp到c:\temp,謝謝.
- 查询数据库的代码错误,请各位帮忙分析一下!
- 我想要http://mysite/myexe.exe?user=xxx,可以吗?我的数据如果是post的又如何呢?
- 三层中的远端呼叫问题
- 如何以SYSTEM权限运行某个函数?
- dbgrid的使用问题。。
{ @UnitName : uTransPanel,pas }
{ @Author : Budded }
{ @Description : 透明 Panel }
{ @FileVersion : 1.0.0.0 }
{ @CreateDate : 2005-08-24 }
{ @LastUpdate : Budded, 2005-08-24 }
{ @History : Created By Budded, 2005-08-24 10:20 }
{******************************************************************************}
unit uTransPanel;interfaceuses
Windows, Messages, SysUtils, Graphics, Classes, Controls, ExtCtrls, Buttons;type
TTransMode = (tmNone, tmSRCCOPY, tmSRCPAINT, tmSRCAND, tmSRCINVERT, tmSRCERASE,
tmNOTSRCCOPY, tmNOTSRCERASE, tmMERGECOPY, tmMERGEPAINT,
tmPATCOPY, tmPATPAINT, tmPATINVERT, tmDSTINVERT, tmBLACKNESS, tmWHITENESS); TTransPanel = class(TPanel)
private
{ Private declarations }
FTransMode: TTransMode; procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND;
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
function GetTransModeEx: Integer;
protected
{ Protected declarations }
Buffer: TBitmap;
procedure CreateParams(var Params: TCreateParams); override;
procedure Paint; override;
procedure Resize; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override;
property TransModeEx: Integer read GetTransModeEx;
published
{ Published declarations }
property TransMode: TTransMode read FTransMode write FTransMode default tmSRCCOPY;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Budded', [TTransPanel]);
end;{ TTransPanel }procedure TTransPanel.CMCtl3DChanged(var Message: TMessage);
begin
inherited;
RecreateWnd;
end;constructor TTransPanel.Create(AOwner: TComponent);
begin
inherited;
Buffer := TBitmap.Create;
FTransMode := tmSRCCOPY;
end;procedure TTransPanel.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_TRANSPARENT;
end;destructor TTransPanel.Destroy;
begin
if Assigned(Buffer) then
Buffer.Free;
inherited;
end;function TTransPanel.GetTransModeEx: Integer;
begin
Result := 0;
case TransMode of //case
tmNone: Result := 0;
tmSRCCOPY: Result := SRCCOPY;
tmSRCPAINT: Result := SRCPAINT;
tmSRCAND: Result := SRCAND;
tmSRCINVERT: Result := SRCINVERT;
tmSRCERASE: Result := SRCERASE;
tmNOTSRCCOPY: Result := NOTSRCCOPY;
tmNOTSRCERASE: Result := NOTSRCERASE;
tmMERGECOPY: Result := MERGECOPY;
tmMERGEPAINT: Result := MERGEPAINT;
tmPATCOPY: Result := PATCOPY;
tmPATPAINT: Result := PATPAINT;
tmPATINVERT: Result := PATINVERT;
tmDSTINVERT: Result := DSTINVERT;
tmBLACKNESS: Result := BLACKNESS;
tmWHITENESS: Result := WHITENESS;
end; // end case
end;procedure TTransPanel.Paint;
var
Rect: TRect;
TopColor, BottomColor: TColor; procedure AdjustColors(Bevel: TPanelBevel);
begin
TopColor := clBtnHighlight;
if Bevel = bvLowered then TopColor := clBtnShadow;
BottomColor := clBtnShadow;
if Bevel = bvLowered then BottomColor := clBtnHighlight;
end;begin
// inherited; Rect := ClientRect;//Rect(0, 0, Width, Height);
Buffer.Width := Width;
Buffer.Height := Height;
Buffer.Canvas.Brush.Style := bsSolid;
Buffer.Canvas.Brush.Color := Color;
Buffer.Canvas.FillRect(Rect);
StretchBlt(Buffer.Canvas.Handle, 0, 0, Width, Height,
Canvas.Handle, 0, 0, Width, Height, TransModeEx); if Ctl3D then DrawEdge(Buffer.Canvas.Handle, Rect, BDR_RAISEDINNER, BF_RECT); if BevelOuter <> bvNone then
begin
AdjustColors(BevelOuter);
Frame3D(Buffer.Canvas, Rect, TopColor, BottomColor, BevelWidth);
end;
if BevelInner <> bvNone then
begin
AdjustColors(BevelInner);
Frame3D(Buffer.Canvas, Rect, TopColor, BottomColor, BevelWidth);
end; Buffer.Canvas.Pen.Mode := pmCopy;
Buffer.Canvas.Pen.Style := psSolid; Canvas.Draw(0, 0, Buffer);
end;procedure TTransPanel.Resize;
begin
inherited;
end;procedure TTransPanel.WMEraseBkgnd(var Message: TMessage);
begin
Message.Result := 0;
end;procedure TTransPanel.WMWindowPosChanging(var Message: TWMWindowPosChanging);
begin
Invalidate;
inherited;
end;end.
唉,还是好几年前的东西了,