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/MFC动态画线(橡皮线),画圆,画椭圆,画矩形

所谓的动态画线,画矩形,画椭圆的本质就是在于消隐问题的解决以及对Windows消息循环机制的理解,消隐问题:因为MFC中有一个函数SetROP2,通过将该函数的参数设置为R2—NOT(当前绘制的像素值...
  • zyq11223
  • zyq11223
  • 2012年12月07日 22:36
  • 29152

VC/MFC动态画线,画圆,画椭圆,画矩形

VC/MFC动态画线,画圆,画椭圆,画矩形 http://blog.csdn.net/zyq11223/article/details/8271006 ...

VC画虚线矩形,点画线矩形

  • 2016年10月09日 15:54
  • 59KB
  • 下载

iOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec...

[Cocoa]_[画线、画矩形、画文字]

  • 2015年10月13日 16:00
  • 42KB
  • 下载

我的5110画图库--Nokia 5110液晶屏实现画点、画线、画矩形、画圆和画图

好久没有写原创帖了,今天分享一个自己写的好东东。    最近花了好多时间终于完成了5110液晶屏的画图函数库,是在之前nios ii的工程基础之上做的,完善了画图的基本函数,有画点,画直线,画折线,...
  • ming1006
  • ming1006
  • 2012年10月11日 23:44
  • 13127

IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

// Only override drawRect: if you perform custom drawing.   // An empty implementation adversely af...

IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

- (void)drawRect:(CGRect)rect   {       CGContextRef context = UIGraphicsGetCurrentContext();    ...

IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc画线画框画矩形
举报原因:
原因补充:

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