透明静态文本框的实现

合集下载

python使用tkinter实现透明窗体

python使用tkinter实现透明窗体

python使⽤tkinter实现透明窗体⽬录⼀、基础说起(⼀)实现最简单的窗体⼆、好戏开始了(⼀)把灰⾊设置成透明⾊(⼆)放置⼀个矩形框在canvas上。

(三)⼤家有发现变化吗?三、成功的背后总有残缺(⼀)让透明窗体不断重画的onsize函数(⼆)绑定onsize函数(三)最终的效果(四)录制了个动态看看⼀、基础说起(⼀)实现最简单的窗体from tkinter import *if __name__ == '__main__':tk = Tk()tk.geometry('500x400+500+150')tk.title('有趣的透明窗体-开篇了')canvas = Canvas(tk)canvas.pack(fill=BOTH, expand=Y)tk.mainloop()太简单了,不详细说了,相信⼤家都看得懂。

效果:感觉空寥寥的,什么都没有,好⽆聊啊。

⼆、好戏开始了也许最有趣的透明窗体就是从这么简单的代码开始。

我们可以设置⼀个叫做透明⾊的颜⾊,然后让窗体canvas画⼀个矩形框,然后将这个矩形框的内⾊设置成透明⾊,那这个窗体不就透明了吗?呵呵,是不是太简单了。

那我们就开始设置⼀下。

(⼀)把灰⾊设置成透明⾊TRANSCOLOUR = 'gray'tk.wm_attributes('-transparentcolor', TRANSCOLOUR)(⼆)放置⼀个矩形框在canvas上。

canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)(三)⼤家有发现变化吗?from tkinter import *if __name__ == '__main__':TRANSCOLOUR = 'gray'tk = Tk()tk.geometry('500x400+500+150')tk.title('有趣的透明窗体-开篇了')canvas = Canvas(tk)canvas.pack(fill=BOTH, expand=Y)canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)tk.mainloop()发现,程序完全不鸟我的代码,还是原来的⽼样⼦。

VS2010之MFC入门到精通教程(155全部)

VS2010之MFC入门到精通教程(155全部)

VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境第二部分:VS2010-MFC应用程序框架第三部分:对话框第四部分:常用控件第五部分:菜单、工具栏与状态栏第六部分:文档、视图和框架第七部分:MFC常用类第八部分:字体和文本输出第九部分:图形图像第十部分:Ribbon界面开发VS2010/MFC编程入门之前言鸡啄米的C++系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。

但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。

鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。

C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。

本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。

VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C++是语言,而VC++是用C++语言编写程序的工具平台。

VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。

Visual Studio包含了VB、VC++、C#等编译环境。

当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。

但自微软2002年发布Visual 以来,微软建立了在.NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有V C++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。

VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC ++ 6.0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。

Dreamweaver静态网页制作过程

Dreamweaver静态网页制作过程
第三页,编辑于星期五:二十三点 五十四分。
Dreamweaver静态网页制作(续)
内部链接:在同一网站文档之间的链接 外部链接:在不同网站文档之间的链接 锚点链接:同一网页或不同网页的指定位置的链接; E-mail链接:翻开填写电子邮件表格的链接; 2)文档的路径(URL) 相对路径: 绝对路径:完整的URL (基于目录的路径):从根目录出发 3)链接的方法 在属性面板中可以直接使用 可以选择被链接文档的载入位置 _blank:新的未命名的浏览器窗口中; _parent:父框架集或包含该链接的框架窗口中; _self:相同的窗口中(是无需指定的) _top:整个浏览器窗口并删除所有框架; 可以借助于样式表来实现
网站内容的组织 (1)选择力求专业化;(主要是面向谁的问题) (2)网页内容的变化性; (3)网站内容设计者的爱好; (4)网站栏目的安排
第十五页,编辑于星期五:二十三点 五十四分 。
Dreamweaver静态网页制作(续)
a.要紧扣主题; b.设立最近更新或网站指南栏目; c.设立可以双向交流的栏目,如论坛、BBS、邮件列表等 d.设立要下载或常见问题的栏目。(从而做到信息资源的共享) 名称要正、名称要易记、名称要有特色。
图像的路径和文件名称,单击“Browse〞(浏览)按钮,可以从磁盘上选择图像文件。 这里不仅可以输入本地图像文件的路径和文件名称,也可以用URL的形式输入其他位置 的图像名称。实际上,这里设置的是<body>标记的background属性。 c)Background(背景) 在这里可以为文档页面指定背景颜色。实际上设置的是<body>标 记的bgcolor属性。 d)Text(文本) 这里可以设置文档页面中文字的前景颜色,实际上设置的是<body>标记的 text属性。 e)Links(链接) 这里可以设置文档页面中尚未访问过的超级链接的文字颜色,实际上设置 的是<body>标记的link属性。 f)Visited Links(访问过的链接) 这里可以设置文档页面中已经访问过的超级链接的文字 颜色,实际上设置的是<body>标记的vlink属性。

MFC中各种控件透明的实现方法总结

MFC中各种控件透明的实现方法总结

MFC中各种控件透明的实现方法总结在MFC中实现控件透明的方法有多种,下面总结了几种常用的方法:
1.使用窗口风格(WS_EX_TRANSPARENT):在控件的创建过程中,使用WS_EX_TRANSPARENT风格可以使控件透明。

这个风格将使控件透明并允许鼠标事件穿透到控件底下的其他控件上。

2. 设置背景透明:可以通过重载控件的OnEraseBkgnd函数,将背景绘制为透明的,实现控件的透明效果。

具体的实现方法是,将背景绘制为透明色,并返回TRUE。

3.使用位图作为控件背景:可以使用透明位图作为控件的背景,这样控件就可以显示位图中的内容,并实现透明效果。

具体的实现方法是,将位图加载进内存DC中,然后将内存DC中的图像绘制到控件的DC上。

4.通过子类化控件:通过子类化控件,可以拦截并处理控件的绘制消息,从而实现透明效果。

具体的实现方法是,创建一个继承自原始控件类的子类,并重载子类的绘制函数,将背景绘制为透明。

6. 使用窗口类别(WS_EX_LAYERED):在控件的创建过程中,使用WS_EX_LAYERED风格可以使控件透明。

这个风格将使控件的窗口使用Alpha混合来控制窗口的透明度。

以上是一些常用的方法来实现MFC中各种控件的透明效果。

根据具体的需求和控件类型,选择适合的方法来实现透明效果。

需要注意的是,在使用透明效果时,需要确保控件的父窗口也是透明的,否则无法实现完全透明的效果。

vc 控件背景透明文字背景透明

vc 控件背景透明文字背景透明

VC 控件背景透明、文字背景透明Visual C++ 开发实战宝典功能:位图上显示文字,背景透明。

void CP400Dlg::OnPaint(){。

CBitmap bmp;bmp.LoadBitmap(IDB_YCH);BITMAP bmInfo;bmp.GetBitmap(&amp;bmInfo);int nBmpWidth,nBmpHeight;nBmpWidth = bmInfo.bmWidth; nBmpHeight = bmInfo.bmHeight;CRect clientRC;GetClientRect(clientRC);CDC *pDC = GetDC();CDC memDC;memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&amp;bmp);pDC-&gt;StretchBlt(0,0,clientRC.Width(),clientRC.Height(), &amp;memDC,0,0,nBmpWidth,nBmpHeight,SRCCOPY); memDC.DeleteDC();bmp.DeleteObject();pDC-&gt;SetBkMode(TRANSPARENT);CFont font;font.CreatePointFont(350,"华文行楷",pDC);pDC-&gt;SelectObject(&amp;font);pDC-&gt;SetTextColor(RGB(0,0,255));pDC-&gt;SetBkColor(RGB(255,0,0));pDC-&gt;TextOut(10,20,"江山如此多娇。

");pDC-&gt;TextOut(10,90,"引无数英雄竞折腰。

css实现文字透明渐变的方法

css实现文字透明渐变的方法

css实现文字透明渐变的方法以CSS实现文字透明渐变的方法在网页设计中,文字透明渐变是一种常见的效果,可以使文字在不同的颜色之间过渡,增加页面的视觉吸引力。

本文将介绍如何使用CSS来实现文字透明渐变的效果。

我们需要在HTML文件中添加一个包含文字的元素,例如一个段落(`<p>`)或标题(`<h1>`)。

然后,通过CSS样式来设置文字的透明渐变效果。

以下是实现文字透明渐变的几种方法:方法一:使用`linear-gradient`函数`linear-gradient`函数可以创建一个线性渐变的背景,我们可以将其应用于文字上。

首先,我们需要设置文字为透明,然后通过`linear-gradient`函数来定义渐变的颜色和方向。

```cssp {color: transparent;background: -webkit-linear-gradient(#f00, #00f);-webkit-background-clip: text;-webkit-text-fill-color: transparent;}```在上述代码中,我们将文字的颜色设置为透明(`color: transparent;`),然后通过`background`属性将文字的背景设置为一个线性渐变(`background: -webkit-linear-gradient(#f00, #00f);`)。

最后,通过`-webkit-background-clip`属性和`-webkit-text-fill-color`属性,将背景裁剪到文字的形状,并填充文字的颜色为透明。

方法二:使用`mask-image`属性`mask-image`属性可以将一个图像应用于元素的蒙版,我们可以将一个渐变图像用作文字的蒙版,从而实现文字透明渐变的效果。

```cssp {-webkit-mask-image: -webkit-linear-gradient(#f00, #00f);mask-image: linear-gradient(#f00, #00f);}```在上述代码中,我们通过`-webkit-mask-image`属性和`mask-image`属性将一个线性渐变图像应用于文字的蒙版,从而实现文字透明渐变的效果。

MFC静态编辑框如何改变字体的大小

MFC静态编辑框如何改变字体的大小

MFC编辑框如何改变字体的大小方法一:步骤一:在Dlg类中增加一个类成员变量: CFont m_editFont;注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。

步骤二:在OnInitDialog方法中增加下列语句:m_editFont.CreatePointFont(180, "宋体");m_editPlace.SetFont(&m_editFont); // 设置新字体方法二:在OnInitDialog方法中增加下列语句也可以实现:CFont* ptf=m_editPlace.GetFont(); // 得到原来的字体LOGFONT lf;ptf->GetLogFont(&lf);lf.lfHeight = 20; // 改变字体高度strcpy (lf.lfFaceName, "隶书"); // 改变字体名称m_editFont.CreateFontIndirect(&lf);m_editPlace.SetFont(&m_editFont); // 设置新字体注意:If是个新的结构体变量,GetLogFont函数是实现将ptf中的LOGFONT结构体变量拷贝给If了,所以改变If不等于是改变ptf中的LOGFONT变量。

所以下面必须加这两句来创建新的字体对象m_editFont.CreateFontIndirect(&lf);m_editPlace.SetFont(&m_editFont); // 设置新字体CFont font;LOGFONT lf;memset(&lf, 0, sizeof(LOGFONT)); // zero out structurelf.lfHeight = 12; // request a 12-pixel-heightfontstrcpy(lf.lfFaceName, "Arial "); // request a face name "Arial "VERIFY(font.CreateFontIndirect(&lf)); // create the fontGetDlgItem(XXX)-> SetFont(&font);下面的例子中,先取得编辑框本身的字体,然后改变其大小(需要注意的是,这种方法下,编辑框本身的字体如果不是TrueType型的话,字体大小的变化不是“连续”的,某些大小值的设定有可能不起作用):CY ourDlg中增加成员变量CFont m_font; //这个绝对不能使临时变量BOOL CY ourDlg::OnInitDialog(){CDialog::OnInitDialog();// TODO: Add extra initialization hereCWnd *pEdit = GetDlgItem(IDC_EDIT1);CFont *pfont = pEdit-> GetFont();LOGFONT logfont;pfont-> GetLogFont(&logfont);logfont.lfHeight = -18;m_font.CreateFontIndirect(&logfont);pEdit-> SetFont(&m_font);return TRUE; // return TRUE unless you setthe focus to a control// EXCEPTION: OCX Pro perty Pages should return FALSE}void CY ourDlg::OnDestroy(){CDialog::OnDestroy();// TODO: Add your message handler code herem_font.DeleteObject();}在OnInitDialog里:CFont *pSignNameFont;pSignNameFont = new CFont;pSignNameFont-> CreateFont(30,20,0,0,150,FALSE,FALSE,0,ANSI_CHARSET, OUT_DEFAULT_P RECIS,CLIP_DEFAULT_PRECIS, DEFAULT _QUALITY,DEFAULT_PITCH | FF_SWISS, "宋体(TrueType) ");GetDlgItem(IDC_EDIT2)-> SetFont(pSignNameFont);LOGFONT lf;//定义字体结构lf.lfWeight=10; //字体磅数=10lf.lfHeight=56; //字体高度56lf.lfWidth=20; //字体宽度20lf.lfUnderline=FALSE; //无下划线lf.lfStrikeOut=FALSE; //无删除线lf.lfItalic=FALSE; //非斜体lf.lfEscapement=0;lf.lfCharSet=DEFAULT_CHARSET; //使用缺省字符集strcpy(lf.lfFaceName, "宋体"); //字体名=@systemCFont myFont; //定义字体对象myFont.CreateFontIndirect(&lf); //创建逻辑字体然后在你需要改的情况下....-> SetFont(&myFont);如何更改static控件的字体大小(2010-04-26 22:21:07)转载标签:分类:C/C++学习杂谈你用的如果VC是5.0,5.0要从光盘上拷几个dll如果是6.0,也许要设置一下。

扩列条模板透明

扩列条模板透明

扩列条模板透明介绍扩列条模板透明是指一种用于扩展网页布局的技术,通过在网页中添加一个透明的扩展列,可以实现更多内容的展示。

本文将详细介绍扩列条模板透明的原理、应用场景以及实现方法。

原理扩列条模板透明的原理是利用CSS中的position属性和z-index属性来实现。

通过将扩展列的position属性设置为fixed,可以使其相对于浏览器窗口固定位置。

而将z-index属性设置为较高的值,则可以使扩展列位于页面其他元素的上方,实现透明效果。

应用场景扩列条模板透明可以广泛应用于各类网页的布局扩展中。

以下列举几个常见的应用场景:1. 侧边栏扩展在一些网页中,为了展示更多的内容,需要在侧边栏上添加一些额外的信息。

通过使用扩列条模板透明,可以在网页的侧边栏上添加一个透明的扩展列,用于展示更多的内容,如相关文章、推荐内容等。

2. 广告展示在一些网页中,为了增加收入,需要在页面上展示广告。

通过使用扩列条模板透明,可以在页面的一侧添加一个透明的扩展列,用于展示广告,不影响页面其他内容的展示。

3. 交互功能扩展在一些网页中,为了提供更好的用户体验,需要添加一些交互功能,如登录框、搜索框等。

通过使用扩列条模板透明,可以在页面的一侧添加一个透明的扩展列,用于展示这些交互功能,使其更加突出。

实现方法实现扩列条模板透明可以通过以下步骤进行:1. 创建HTML结构首先,需要在网页中创建一个扩展列的容器,可以使用div标签来实现。

在该容器中,可以添加需要展示的内容。

<div class="sidebar"><h3>相关文章</h3><ul><li>文章1</li><li>文章2</li><li>文章3</li></ul></div>2. 添加CSS样式接下来,需要为扩展列添加CSS样式,实现透明效果和固定位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我也来说说透明静态文本框的实现
Google一下“透明静态文本框”,给出的大多数都是靠如下代码来实现的:
HBRUSH CTransparentLabelDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtl Color)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (CTLCOLOR_STATIC == nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
效果如图:
在大多数情况下这种方法都没问题,但是,当需要动态更改静态文本框中的内容时就会出现这样的问题:
也就是出现了文字重叠现象。

其原因出在“透明”身上。

一般情况下在绘制界面时会先绘制对话框的背景然后才会绘制子控件,而子控件通常都会自绘其背景的,于是子控件绘制完之后就会盖住对话框原先所绘制的一部分内容,所以“透
明”效果就是靠禁止子控件自绘背景而实现的。

了解了“透明”后,再来回到刚才的问题上。

因为现在静态文本框不会去擦除背景而只是绘制出文字,于是之前的“测试”就会残留在对话框背景上,只有引起对话框背景重绘时才能去掉。

于是,我们应该在设置完文本框的文字后再让对话框重绘背景才行。

修改一下“更改文本”按钮响应函数:
void CTransparentLabelDlg::OnBnClickedButton1()
{
CString tmp;
GetDlgItemText(IDC_EDIT1 , tmp);
SetDlgItemText(IDC_STATIC1 , tmp);
// 一下为新添加内容。

只需局部重绘背景即可
CRect rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect);
UpdateWindow();
}
效果如图:
这样一来就更好的实现了“透明”。

以上只是小弟的一些理解,如果有什么地方说的不对,或者你有更好的方法来实现“透明”,还望告知,小弟先谢过了: P。

相关文档
最新文档