• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 透明绘图的另类问题。高手请来。不是普通的透明绘图能解决的

透明绘图的另类问题。高手请来。不是普通的透明绘图能解决的

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了你是猴子请来的救兵吗,经理请来推倒我,请来个正常点的主人吧,猴子请来的救兵,你是猴子请来的逗比吗等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 透明绘图的另类问题。高手请来。不是普通的透明绘图能解决的
描述:

我使用了MEMDC(我改过了)。我设置了一个定时器。我想实现透明绘图到控件上。但我我不想在控件上显示除我要的图形外的任何其他背景。。。。。。比如我就只要画个圆,而且要在很高刷新状态不闪。
void CClockSta::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CStatic::OnPaint()
GetClientRect(&m_rect);    
CTime time_cuurent;
time_cuurent=CTime::GetCurrentTime();
m_strTime=time_cuurent.Format("%Y 年 %m 月 % 日 %H : %M : %S ");
CMemDC pdc(&dc,m_rect); //默认位图是全黑色的
   pdc.SelectObject(this->m_brushBlue);
pdc.SelectObject(this->m_pen);
CRect rect=m_rect;
rect.DeflateRect(1,1);
pdc.RoundRect(rect,CPoint(5,5));
pdc.SetBkMode(TRANSPARENT);
pdc.SetTextColor(m_TXcolor);
pdc.DrawText(m_strTime,rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE );//DT_VCENTER|必须和DT_SINGLELINE一起
CMemDC pdc2(&dc,m_rect); //这个是屏蔽图,需要把底色设置为白色
pdc2.FillSolidRect(m_rect,RGB(255,255,255));
pdc2.SetROP2(R2_BLACK);
pdc2.SelectObject(this->m_brushBlue);
pdc2.SelectObject(this->m_pen);
pdc2.RoundRect(rect,CPoint(5,5));
pdc2.SetBkMode(TRANSPARENT);
pdc2.SetTextColor(RGB(0,0,0));
pdc2.DrawText(m_strTime,rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE );
pdc2.BitBlt(SRCAND);//执行AND运算
pdc.BitBlt(SRCPAINT);//执行OR运算    
}
当我设置SetTimer(1,1,0)的时候,很屏幕很闪。。。
pdc2.BitBlt(SRCAND);//执行AND运算
pdc.BitBlt(SRCPAINT);//执行OR运算  
上面两句我随便注释掉一句问题,就不闪了。


解决方案1:

CMemDC是你自己定义的?!
从你的代码看,
pdc2.BitBlt(SRCAND);//执行AND运算
pdc.BitBlt(SRCPAINT);//执行OR运算 
都是在向显示DC执行BitBlt操作?  如果是这样,由于你两次的时间间隔非常短,故会闪得非常厉害.因此也出现了你随便注释一句便不闪的现象.
你是不是可以先将要显示的图形在MEMDC中准备完成后再整体复制到显示DC中?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 想成为COM高手请来讨论几个问题,高分相送
  • 透明绘图的另类问题。高手请来。不是普通的透明绘图能解决的

相关文章

  • 2017-06-05 请问VC多线程编程,看什么书好
  • 2017-06-04 求助,在线等待
  • 2017-06-04 急急求经验丰富的高手求助
  • 2017-06-04 我用VC++2005写的程序,怎么样才能把它做成setup安装文件呀
  • 2017-06-04 我的Activex控件里为什么没有ActiveMovieControlObject?
  • 2017-06-05 javascript调用VC编写的OCX
  • 2017-06-04 OLEDB连接删除修改数据表问题,删除记录的时候成功但是数据库记录没删除
  • 2017-06-05 请问如何在一个已有的应用程序中添加自己的按钮
  • 2017-06-04 100分请教ATL编写ASP组件过程中遇到的问题
  • 2017-06-04 ActiveX的字体?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何用VC做一个OLEDocumentServer?
    • DirectShow求救,怎样从一个IPin转换得到CBasePin?
    • 对Excel的操作为何在工作者线程中失败?
    • 我调用DLL的程序,总是弹警告哪里的问题?
    • 真正的高手在哪里,天下第一难题(关于ATL对话框)
    • 为什么我的程序总是编译失败(谁要源代码)
    • 一个控件问题,实在没分了,对不起,帮帮我
    • 请问下,控件测试容器的control菜单->DrawMetafile有什么用?是预览的功能吗
    • activex封装DLL的问题
    • 串口通讯的问题MSCOMM控件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有