关于各种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);

相关文章推荐

C#dC# 简单网页外挂实例

1 实例1  此处所说的网页外挂即是网页自动化操作;获取网页上的元素属性;用程序点击网页上的按钮或链接等; 打开百度首页,在输入框自动输入10个字符串,自动点击 百度一下 按钮;   主要使用...

DC综合简单总结

综合分为三个部分:Synthesis= Translate + Mapping + Optimization。 1、  Translate是将 HDL转化为GTECH库元件组成的逻辑电路,这步通过...

dc打印实例vc++调用默认打印机驱动

  • 2015年01月29日 12:49
  • 1.26MB
  • 下载

使用 Crossfilter 和 dc.js 构建交互式报表

在对多维数据集进行图表分析时,我们希望在图表之间建立联系,选择图表中的一部分数据后,其他图表也会相应变动。这项工作可以通过开发完成,即在服务端对数据进行过滤,并更新所有图表。此外,我们还可以借助 Cr...
  • zjerryj
  • zjerryj
  • 2017年08月09日 08:49
  • 585

CASIO DC-850 DATA-CAL Manual (操作使用方法)

CASIO DC-850 DATA-CAL 电子记事本 网上搜不到完整的使用手册,只有一个设置时间的图片 将用一晚上时间摸索出来的全部功能的使用方法,整理共享...

RC与DC的介绍与使用

OpenGL的绘图方式与Windows一般的绘图方式是不同的,主要区别如下: 1、Windows采用的是GDI在设备描述表DC上进行绘图。 2、OpenGL采用的是OpenGL相关的函数在渲染描述...

FTP客户端软件FileZilla使用教程(转自:http://hi.baidu.com/%B8%DF%C7%E5%D6%AE%D3%D1/blog/item/36d6c8b6dc0589fc30a)

描述: FileZilla是一个免费开源的FTP客户端软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高...
  • lslxdx
  • lslxdx
  • 2011年09月29日 14:10
  • 1977

linux下的EDA——DC使用

Design Compiler的作用是将RTL级代码转化为门级网表,为后续的时序分析和后仿做准备...

如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇

如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇前言什么是Azure Container Service(简称ACS)目前越来越多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于各种dc的实例简单使用
举报原因:
原因补充:

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