关于各种dc的实例简单使用

原创 2011年01月21日 20:59:00

用win32API画线

 HDC hdc;
 hdc=::GetDC(m_hWnd);
 MoveToEx(hdc,m_pOrigin.x,m_pOrigin.y,NULL);
 LineTo(hdc,point.x,point.y);
 ::ReleaseDC(m_hWnd,hdc);*/

用封装的cdc画线

/* CDC *pdc=GetDC();
 pdc->MoveTo(m_pOrigin);
 pdc->LineTo(point);
 ReleaseDC(pdc);*/

 用cdc派生的CClientDC画线

 CClientDC dc(this);              //dc和view联系

 CClientDC dc(GetParent());   //将dc和frame联系
 dc.MoveTo(m_pOrigin);     

 dc.LineTo(point);

这就不需要我们去调用dc了,在它对象构造析构的时候自动完成
 用cdc派生的CWindowDC 画线

    CWindowDC dc(this);
    CWindowDC dc(GetParent());
    dc.MoveTo(m_pOrigin);    //这也不需要我们去调用dc了
 dc.LineTo(point);

这也不需要我们去调用dc了,在它对象构造析构的时候自动完成

注意,它能访问到整个屏幕,客户区和非客户区(标题栏和菜单)

 CWindowDC dc(GetDesktopWindow());我们就可以画到桌面,主要看

你将dc和哪个窗口联系起来了

 

想画其他颜色的线条,可以创建一个新画笔,然后选到dc中

用cpen类

CPen pen(PS_GEOMETRIC ,1,RGB(0,0,255));    (用后面参数构造一个画笔对象,这都忘了。。。)
 CClientDC dc(this);
 CPen *pOldpen=dc.SelectObject(&pen);

  dc.MoveTo(m_pOrigin);
 dc.LineTo(point);
 dc.SelectObject(pOldpen);
//将现在的画笔选入设备上下文,然后返回一个旧画笔的指针,我们保存起来,用完这个画 笔,再把以前的选回去

 

画刷,填充

 

CBrush brush(RGB(255,0,0));

CClientDC dc(this);

dc.FillRect(CRect(m_pOrigin,point),&brush);

 

 

 

 

CBitmap bitmap;

bitmap.LoadBitmap(IDB_BITMAP1);                //用位图填充

CBrush  brush(&bitmap);

CClientDC dc(this);

dc.FillRect(CRect(m_pOrigin,point),&brush);

 

 

 

 CClientDC dc(this);

   CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//(强制转换)获取空画刷句柄再转为指针

CBrush  *pOldbrush=dc.SelectObject(pBrush);

dc.Rectangle(CRect(m_pOrigin,point));

    dc.SelectObject(pOldbrush);

 

 

fromhandle 从句柄转到指针           

fillrect和rectangle方法是不同的,前者提供一个画刷,所以不用选中画刷,而后者,我们需要创建画刷再选入

 

实现连续划线功能:声明一个bool变量,buttondown为真,buttonup为假,

CClientDC dc(this);

 

if(m_bDraw==TRUE)             //为真的时候,响应鼠标移动这个信息

{

       dc.MoveTo(m_pOrigin);

  dc.LineTo(point);

  m_pOrigin=point;             、、不断地画两点间的小线段,线段尾点是下一段的起点,直到buttonup,不再画

}

 

CClientDC dc(this);

    CPen pen(PS_SOLID ,1,RGB(255,0,0));

CPen *pOldpen=dc.SelectObject(&pen);            //复习填充更换画笔的代码

if(m_bDraw==TRUE)

{

       dc.MoveTo(m_pOrigin);

  dc.LineTo(point);

  m_pOrigin=point;

}

dc.SelectObject(pOldpen);

DC-电路的设计目标和约束

首先明白DC综合的几个步骤: 电路的逻辑综合由三步组成 综合=转化+优化+逻辑映射 转化:将电路转化成gtech的功能网表 优化:根据时序和面积,功耗约束对电路进行优化 逻辑映射:将工艺库的逻辑单元...
  • seuwilson
  • seuwilson
  • 2016年09月06日 18:53
  • 278

关于递归的简单使用

递归简单使用 使用的软件为 intellij ideapublic class Teacher { public static void main(String[] args) { ...
  • QLX119
  • QLX119
  • 2017年04月06日 18:25
  • 180

DC-DC转换电路原理(转)

在电路设计中,DC-DC转换电路经常被用来对直流电源进行不同压值的高效转换。如高压到低压,低压到高压的转换。相对于LDO,DC-DC转换电路具有更高的转换效率,但在设计上也要相对复杂些。 DC-DC...
  • yyao1024
  • yyao1024
  • 2011年05月06日 00:34
  • 1929

okhttp的简单使用例子

OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势。  1. GET  在OKHttp,每次...
  • sanciyuan2044123845
  • sanciyuan2044123845
  • 2017年05月11日 14:53
  • 696

DC 时序约束

 本文如果有错,欢迎留言更正;此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 前面介绍的设计都不算很复杂,都是使用时钟...
  • gangeqian2
  • gangeqian2
  • 2017年10月16日 19:40
  • 444

各种DC

HDC 由windows sdk提供,可获取某一窗口的设备描述表句柄。MFC为我们提供了三种操作设备描述表:CDC 设备描述表的封装类,封装了所有与绘图相关的操作CClientDC 派生于CDC 仅在...
  • xiaochongchong1248
  • xiaochongchong1248
  • 2009年08月26日 09:16
  • 366

关于DC的综合学习(1)—原理基础

何谓综合?一言以蔽之就是讲高层次描述转化成门级网表的我
  • u010951236
  • u010951236
  • 2014年05月20日 14:48
  • 1705

各种DC的使用

第一种:SDK下的HDC HDC  hdc = GetDC(hWnd);  //hWnd是InistInstance中调用CreateWindow返回的一个通常用HWND类型的hWnd变量接收 ...
  • qq2399431200
  • qq2399431200
  • 2013年09月03日 15:42
  • 1032

HttpWebRequest简单实例

static void Main(string[] args) { HttpWebRequest request = (HttpWebRequest)HttpW...
  • Momo_Da
  • Momo_Da
  • 2017年03月23日 20:51
  • 245

TensorBoard-可视化简单例子

一、代码例子 # -*- coding: utf-8 -*- """ Created on Tue Apr 18 18:50:24 2017 @author: YDD """ ''' 生成一个文件...
  • waterydd
  • waterydd
  • 2017年04月19日 10:03
  • 2141
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于各种dc的实例简单使用
举报原因:
原因补充:

(最多只允许输入30个字)