当前位置: 首页 > article >正文

vc画线画框画矩形

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);

http://www.lryc.cn/news/2415968.html

相关文章:

  • dmscript.dll文件丢失导致程序无法运行问题
  • 2023 抖音\百度\哔哩哔哩热搜热榜单页HTML源码
  • 六祎-实现微信支付宝QQ钱包三块合一收款码
  • 基于Java游戏在线论坛系统的设计与实现(源码+LW+调试文档+讲解等)
  • shsh备份工具_32位设备有SHSH随意降级平刷教程Windows版
  • [0451]基于JAVA的公益林智慧管理系统的设计与实现
  • 淘宝皇冠店铺大全,淘宝最好的皇冠店铺,淘宝皇冠店铺TOP10
  • UVA1585 Score
  • 浏览器判断是否安装了ios/android客户端程序
  • 谷歌翻译浏览器扩展,替换国内服务器版
  • 网络--传输层TCP、UDP、流量控制、拥塞避免、三次挥手
  • 解决windows防火墙无法更改某些设置 错误代码0X800
  • Chart控件---饼图基本用法
  • 快速排序VS堆排序
  • 光棍节程序员闯关秀 小游戏
  • CBrush
  • JavaScript入门:掌握基础语法
  • Free Pascal不完全攻略之一 :进入FP的世界
  • 编程示例:计算1000的阶乘
  • lsass.exe病毒木马手工清除方法
  • CSDN论坛--提问的智慧
  • 微软笔试题《Arithmetic Puzzles》- 题解
  • WPF特效-鱼游动动画3
  • 5分钟了解《代码整洁之道》精华
  • React 核心开发者 Dan Abramov 访谈实录
  • Markdown数学公式语法
  • 入门--什么是机器码、注册机和注册码
  • java 调c catch 异常_简单谈谈java的异常处理(Try Catch Finally)
  • 一文告诉你啥是nginx,nginx基础知识详解
  • 导航栏透明化方案