vc画线画框画矩形

转载 2016年05月30日 16:33:18

CPaintDC, 用于在窗口客户区画图(仅限于在OnPaint处理函数中使用);

        CClientDC, 也用于在窗口客户区画图(限于在OnPaint处理函数之外使用)

        CWindowDC, 用于在窗口内任意地方画图,包括非客户区;

        CMetaFileDC, 用于绘制GDI图元文件。

画线:

 

HDC方法

HDC hdc;

Hdc=::GetDC(m_hWnd);// ::是全局函数

MoveToEX(hdc,m_ptOrifin.x, m_ptOrifin.y,NULL); //Cpoint m_ptOrigin;前面已经定义和赋值

LineTo(hdc,point.x,point.y);//point是函数本身参数,确定当前鼠标的位置

::ReleaseDC(m_hWnd,hdc);

 

CDC类方法

CDC *pDC=GetDC();

pDC ->MoveTo(m_ptOrigin);

pDC ->LineTo(point);

ReleaseDC(pDC);

 

CClientDC类的方法  //自动在对象建立和析构时 完成部分任务

CClientDC dc(this);    //this是本类窗口的指针 若是GetParent() 则返回副类的窗口(Frame)的指针,则画线可以到框架窗口中

dc.MoveTo(m_ptOringin);

dc.LineTo(point);

 

CWindowDC类的方法// 窗口内任意地方画图,包括非客户区

CwindowDC dc(this);

dc.MoveTo(m_ptOrigin);

dc.LineTo(point);

CwindowDCCview中和Cclient没什么区别

但当把this改成GetParent()不仅可以访问框架窗口了 还有系统菜单 等整个窗口 包括客服区和非客服区

 

若是GetDesktopWindow()则可以访问整个桌面

 

 

------------------------------------------------------------------

 CRect类与Windows RECT结构相似,并且还包括操作CRect对象和Windows RECT结构的成员函数。

在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都可以传递CRect对象来代替。

RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员。

默认坐标系:原点为左上角,右边为x轴正方向,下边为y轴正方向。
 
CRect构造矩形的方法:
构造函数(CRect)有五个原型,第二个原型和第三个原型是拷贝构造函数。用其它三个构造函数构造一个左上角坐标为(10,20),x方向边长为100,y方向边
长有200的矩形。

原型一:

CRect r1(10,20,110,220);//左上角坐标为(10,20),x方向边长为100,y方向边

原型四:

POINT pt = {10,20};
SIZE size = {100,200};
CRect r2(pt,size);

原型五:

POINT topLeft = {10,20};
POINT bottomRight = {110,220} ;
CRect r3(topLeft,bottomRight);

 

 

 

 

 

 

 

---------------------------------------------------------------------------------------------------------------

画笔

---------------------------------------------------------------------------------------------------------------

CPen pen(PS_SOLD,1,RGB(255,0,0));//第一个是现实模式 2是线粗细 3是颜色

CClientDC dc(this);

CPen *pOldPen=dc.SelectObject(&pen);//SelectObject 是绑定画笔

dc.MoveTo(m_ptOrigin);

dc.Line(point);

dc.SelectObject(pOldPen);

 

画刷

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

CRlientDC dc(this);

dc.FillRcet(CRect(m_ptOringin,point),&brush);

 

 

位图的画刷

CBitmap bitmap;

bitmap.LoadBitmap(IDB_BITMAP1);

CBrush brush(&bitmap);

CClientDC dc(this);

dc.FillRect(Crect(m_ptOrigin,point),&brush);

 

画矩形

CClientDC dc(this);

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

但画出的矩形相互遮盖

 

因为画矩形时里面有个默认白色画刷,所以画矩形时就填充了

实现交叉

CClientDC dc(this);

CBrush *pBrush=Cbrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH);

CBrush *pOldBrush=dc.SelectObject(pBrush);

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

dc.SelectObject(pOldBrush);

 

 线 

CClient dc(this);

if(m_bDraw==TRUE)

{

       dc.MoveTo(m_ptOrigin);

       dc.LineTo(point);

       m_ptOrigin=point;

}

画有颜色

CClient dc(this);

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

CPen *pOldPen=dc.SelectObject(&pen);

if(m_bDraw==TRUE)

{

       dc.MoveTo(m_ptOrigin);

       dc.LineTo(point);

       m_ptOrigin=point;

}

dc.SetectObject(pOldPen);

画扇形

CClient dc(this);

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

CPen *pOldPen=dc.SelectObject(&pen);

if(m_bDraw==TRUE)

{                                      //dc.SetROP2(R2_MERGENOTPEN);或操作

       dc.MoveTo(m_ptOrigin);                dc.MoveTo(m_ptOrigin);

       dc.LineTo(p_ptOld);                    dc.LineTo(p_ptOld);

       dc.MoveTo(m_ptOrigin);                dc.MoveTo(m_ ptOld);

       dc.LintTo(point);                       dc.LintTo(point);

       m_ptOld=point;                        m_ptOld=point;

}

dc.SetectObject(pOldPen);

vc画线画框画矩形

CPaintDC, 用于在窗口客户区画图(仅限于在OnPaint处理函数中使用);         CClientDC, 也用于在窗口客户区画图(限于在OnPaint处理函数之外使用); ...
  • phenixyf
  • phenixyf
  • 2015年04月13日 14:58
  • 3125

YUV数据画矩形和直线

YUV数据画矩形和直线 划线函数用breshenham算法,yuv数据格式为 422sp 。 //在YUVsp422数据上画直线,imgdata是 YUV数据指针, int width, int he...
  • u011432426
  • u011432426
  • 2015年08月28日 17:15
  • 969

Camera2在预览的TextureView上画矩形

Camera2在预览的TextureView上画矩形盖天地不全,这经原是全全的,今沾破了, 乃是应不全之奥妙也,岂人力 所能与耶! 愿来者补充使用手机摄像头进行人脸检测,对图像进行处理然后,画出矩形在...
  • u010277233
  • u010277233
  • 2016年08月12日 17:11
  • 1651

OPENCV图像处理基础(五)鼠标事件画个框

在GUI编程中会涉及到鼠标事件,通过鼠标事件可以使得人和机器的交互更为便捷。opencv中提供了一种以回调函数实现的鼠标事件机制。 下面是一个例子,通过鼠标在一张图片上画出任意大小的矩形框。 效果...
  • chenpidaxia
  • chenpidaxia
  • 2016年03月24日 22:44
  • 1540

在unity里用GL画线框

最近由于闲来无事,无意中看到vectrosity这个画线插件,就想研究一下,下载下来之后发现导入到unity里之后出现错误,由于自己是蠢新所以改了一通也没改对,所以就放弃了,大家需要插件的话待会我会上...
  • ep661215
  • ep661215
  • 2016年04月19日 17:23
  • 1862

openlayers2.X画园形和扇形demo

OpenLayers有一个类: OpenLayers.Geometry.Polygon.createRegularPolygon, 查看源代码定义如下: /** * APIMethod: crea...
  • laohoubin
  • laohoubin
  • 2015年01月19日 12:51
  • 1122

c#PictureBox画直线 矩形

转自:http://blog.csdn.net/hejialin666/article/details/3584285 c#PictureBox的基本使用(画直线,矩形) 下面的四个事件一定要绑...
  • yueguanyun
  • yueguanyun
  • 2016年05月13日 13:07
  • 2112

【Qt开发】Qt在QLabel(QWidget)鼠标绘制直线和矩形框

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/243546 说...
  • LG1259156776
  • LG1259156776
  • 2016年09月06日 23:40
  • 4312

自定义View(一)——画线、矩形、圆形、图像

一、最简单的自定义View,什么都不显示,但是有View的特性 com.cctvjiatao.customview.MainActivity package com.cctvjiatao.custom...
  • lvyoujt
  • lvyoujt
  • 2016年03月12日 13:29
  • 4450

D3D9---2D编程(画矩形)

#include #include #pragma comment(lib, "D3D9.lib") const TCHAR *kClassName = L"Rectangle_D3D"; I...
  • jujueduoluo
  • jujueduoluo
  • 2016年10月08日 11:39
  • 993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc画线画框画矩形
举报原因:
原因补充:

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