社区
Delphi
帖子详情
我想让panel半透明并且让panel可以在边上时自动隐藏,高手请指点。
tianwailiuxingy
2009-12-11 04:37:35
我想让panel半透明并且让panel可以在边上时自动隐藏,高手请指点。
...全文
563
11
打赏
收藏
我想让panel半透明并且让panel可以在边上时自动隐藏,高手请指点。
我想让panel半透明并且让panel可以在边上时自动隐藏,高手请指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yjkn
2011-08-17
打赏
举报
回复
帮顶的
SAMLLY
2011-08-10
打赏
举报
回复
Ding
king_shadow
2010-01-13
打赏
举报
回复
看不到内容?
yymao2005
2010-01-09
打赏
举报
回复
[Quote=引用 2 楼 delphi_freeman 的回复:]
panel 放在form里,让form隐藏不就ok了。
[/Quote]
如果form 透明是用CustomForm实现的,那么隐藏form,上面的panel是不会一同隐藏的。
hjkto
2009-12-11
打赏
举报
回复
哎,没看明白怎么用呀?
mdejtod
2009-12-11
打赏
举报
回复
继承tcustompanel控件重写一个,覆盖paint 事件
再作处理
var FAlphaValue : byte; //0-255
procedure Paint(); override;
procedure TTransParentPanel.Paint;
var FRect : windows.TRect;
Buf : TBitmap;
uDrawTextFlag : Integer;
begin
Buf := TBitmap.Create();
Buf.Width := Width;
Buf.Height := Height;
Buf.Canvas.Brush.Color := Color;
buf.Canvas.FillRect(Buf.Canvas.ClipRect);
DoTrans(Buf.Canvas,Self);//获取背景图
DrawAlpha(Buf); //将背景图与控件颜色用FAlphaValue进行混合透明
Buf.Canvas.Brush.Style := bsClear;
if Trim(Caption) <> '' then
begin
Buf.Canvas.Font := Font;
if (FCaptionPosX <> -1) and (FCaptionPosY <> -1) then
begin
Buf.Canvas.TextOut(FCaptionPosX, FCaptionPosY, Caption);
FLastDrawCaptionRect := Classes.Rect(
FCaptionPosX,
FCaptionPosY,
FCaptionPosX + Buf.Canvas.TextWidth(Caption),
FCaptionPosY + Buf.Canvas.TextWidth(Caption)
);
end
else
begin
FRect := ClientRect;
uDrawTextFlag := DT_CENTER;
if Alignment = taRightJustify then
uDrawTextFlag := DT_RIGHT
else if Alignment = taLeftJustify then
uDrawTextFlag := DT_LEFT;
DrawText(Buf.Canvas.Handle, PChar(Caption), -1, FRect, uDrawTextFlag or DT_SINGLELINE or DT_VCENTER);
FLastDrawCaptionRect := FRect;
end;
end;
BitBlt(Canvas.Handle, 0, 0, Width, Height, Buf.Canvas.Handle, 0, 0, SRCCOPY);
Buf.Free();
end;
procedure TTransParentPanel.DoTrans(FCanvas: TCanvas;FContorl : TWincontrol);
var DC : Hdc;SaveIndex :HDC; Position : Tpoint;
begin
if FContorl.Parent <> nil then
begin
{$R-}
Dc := FCanvas.Handle;
SaveIndex := SaveDc(Dc);
GetViewPortOrgEx(Dc,Position);
SetViewPortOrgEx(Dc,Position.X - FContorl.Left,Position.Y - FContorl.Top,nil);
IntersectClipRect(Dc,0,0,FContorl.parent.clientwidth,FContorl.parent.clientheight);
FContorl.Parent.perform(WM_ERASEBKGND,Dc,0);
FContorl.Parent.Perform(WM_PAINT,DC,0);
RestoreDC(Dc,SaveIndex);
{$R+}
end;
end;
procedure TTransParentPanel.DrawAlpha(var dBmp : TBitmap);
var i,j ,FCurX,aW,aH: Integer;
PD : PByteArray;
R,G,B : Byte;
begin
dBmp.Canvas.Lock;
R := GetRValue(DWORD(Color));//控件颜色
G := GetGValue(DWORD(Color));
B := GetBValue(DWORD(Color));
aH := dBmp.Height;
aW := dBmp.Width;
for i := 0 to aH - 1 do
begin
PD := dBmp.ScanLine[i];
for j := 0 to aW - 1 do
begin
try
FCurX := j *3;
PD[FCurX] := (PD[FCurX] * ( 255 - FAlphaValue) + B * FAlphaValue) shr 8;
PD[FCurX + 1] := (PD[FCurX + 1] * ( 255 - FAlphaValue) + G * FAlphaValue) shr 8;
PD[FCurX + 2] := (PD[FCurX + 2] * ( 255 - FAlphaValue) + R * FAlphaValue) shr 8;
except
Continue;
end;
end;
end;
dBmp.Canvas.Unlock;
end;
自动隐藏只要判断控件的位置是否在一个设定的范围内就隐藏掉就可以了
hjkto
2009-12-11
打赏
举报
回复
mark
无条件为你
2009-12-11
打赏
举报
回复
顶一下。
yumenyoudian
2009-12-11
打赏
举报
回复
半透明可以重载Panel的WM_Paint消息:
procedure TPanel.WMPaint(var: TMessage); message WM_Paint;
procedure AlphaBlendTabControl;
var
MemBitmap, OldBitmap: HBITMAP;
BF: BLENDFUNCTION;
MemDC, DC: HDC;
begin
if (Parent = nil) or not Parent.HandleAllocated then
Exit;
DC := GetDC(0);
MemBitmap := CreateCompatibleBitmap(DC, Parent.Width, Parent.Height);
ReleaseDC(0, DC);
MemDC := CreateCompatibleDC(0);
OldBitmap := SelectObject(MemDC, MemBitmap);
try
Parent.Perform(WM_ERASEBKGND, MemDC, MemDC);
Parent.Perform(WM_PAINT, MemDC, 0);
BF.SourceConstantAlpha := 100;
BF.AlphaFormat := 0;
BF.BlendOp := AC_SRC_OVER;
BF.BlendFlags := 0;
Windows.AlphaBlend(Canvas.Handle, 0, 0, Width, Height, MemDC, Left, Top, Width, Height, BF);
finally
SelectObject(MemDC, OldBitmap);
DeleteDC(MemDC);
DeleteObject(MemBitmap);
end;
end;
begin
inherited;
AlphaBlendTabControl;
end;
至于自动应藏可以在WM_WINDOWPOSCHANGED消息里面处理
随行的太阳
2009-12-11
打赏
举报
回复
panel 放在form里,让form隐藏不就ok了。
yct0605
2009-12-11
打赏
举报
回复
使用第三方控件吧,raize里面的试试看。
Prometheus+Grafana性能测试监控平台(入门+案例实操)
序号内容详情内容第1讲关于《Prometheus+Grafana监控 》阐述本次系统列课程主要讲述的内容第2讲Prometheus核心组件之Prometheus Server介绍Prometheus Server组件的功能和工作原理第3讲Prometheus核心组件之Exporters介绍Exporter如何将监控到的数据暴露给Prometheus Server第4讲Prometheus核心组件之AlxrtManager和PushGateway介绍AlxrtManager和PushGateway两个组件的使用第5讲Prometheus核心组件之Service Discovery介绍Prometheus是如何发现被监控对象的第6讲Prometheus核心组件之Dashboard介绍Prometheus如何与第三方展示板配合,将数据以视图的方式展现出来第7讲Prometheus
时
间序列理解Prometheus
时
间序列,理解采集的样本第8讲Prometheus的Metric类型了解Prometheus的底层数据模型第9讲初步理解PromQL理解Prometheus中的PromQL工作原理第10讲PromQL操作符介绍PromQL操作符的用法:算术运算、布尔运算、集合运算和模式匹配第11讲PromQL聚合函数介绍常见的聚合函数使用:avg、max、min等第12讲PromQL内置函数介绍PromQL内置函数:rate、label_replace、label_join等第13讲HTTP API中使用PromQL介绍在HTTP API中使用PromQL进行瞬
时
数据查询和区间数据查询第14讲4个黄金指标和USE方法介绍行业常用的4个黄金指标和USE方法来分析性能结果第15讲Prometheus告警原理介绍Prometheus告警工作原理第16讲自定义Prometheus告警规则介绍如何自定义Prometheus告警规则,及参数解析第17讲部署Alertmanager介绍Docker下部署Alertmanager第18讲Alertmanager配置发送邮件介绍Alertmanager配置项的含义,配置发送邮件第19讲配置route路由配置多级route路由,以及route路由工作原理第20讲配置group告警分组将相同标签的告警合并成一个通知第21讲Alertmanager配置警告通知模板通过templates来配置自定义告警模板第22讲Alertmanager抑制机制和临
时
静默设置Alertmanager如何抑制警告和如何配置 Alertmanager临
时
静默规则第23讲部署grafana介绍如何在docker下部署grafana数据可视化平台第24讲grafana组成部分介绍grafana核心组成部分:数据源、仪表盘、用户和组织第25讲grafana之Graph面板介绍grafana中的Graph面板、面板中各选项的含义以及如何添加自定义面板第26讲Dashboard变量定义通过Dashboard中变量定义来优化
panel
面板第27讲模板化Dashboard自定义和模块化Dashboard第28讲Prometheus监控系统资源使用node_exporter获取系统资源的监控数据第29讲Prometheus监控apache使用apache_exporter监控apache服务器第30讲Prometheus监控tomcat介绍如何使用prometheus获取tomcat的数据第31讲Prometheus监控nginx通过nginx-exporter让prometheus获取nginx的数据第32讲Prometheus监控mysql通过mysql-exporter让prometheus监控mysql的数据第33讲Prometheus监控redis通过redis-exporter让prometheus监控redis的数据第34讲Prometheus监控docker通过cadvisor让prometheus监控docker的数据
C#
Panel
半透明
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言
Panel
设置 Transparent 属性之后会出现闪烁情况窗体加载防闪烁代码优化总结 前言 实现下图中
panel
控件
半透明
效果之前在别的项目用无边框窗体的Opacity属性实现过这种效果;现在
想
就一个窗体中实现,网上搜到用户控件的方法尝试了下,透明可以实现但是里面的button按钮无法实现透明;网上案例大部分提到利用颜色达到透明效果这种只是颜色透明;也搜到使用 Transparent 在碰到窗体有 PictureBo.
C# 透明背景
Panel
, 透明图像, PitureBox透明效果
C# 透明背景
Panel
,透明图像,PitureBox透明效果
c#透明
panel
先看下效果 纯透明的pane,然后设置一个
半透明
的图片,可以看出来显示了父控件的button 看代码 public partial class
Panel
Ex :
Panel
{ protected Graphics graphics; protected override CreateParams CreatePa...
c# 可以设置透明度的
Panel
组件
c# 可以设置透明度的
Panel
组件 Posted on2013-12-28 13:47快乐家++阅读(7419) 评论(2)编辑收藏 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
Delphi
5,402
社区成员
262,732
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章