`
wo_deqing
  • 浏览: 64212 次
文章分类
社区版块
存档分类
最新评论

VC绘图初步

 
阅读更多

要做路径规划东东了,仿真需要陈vc,先扫扫盲吧!

1.使用SDK获取DC句柄
HDC hdc;
hdc=::GetDc(m_hWnd);<wbr><wbr><wbr>//获取DC句柄<br> MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);<br> LineTo(hdc,point.x,point.y);<br> ::ReleaseDC(m_hWnd,hdc);<wbr><wbr><wbr>//释放DC</wbr></wbr></wbr></wbr></wbr></wbr>

2.利用CDC类指针和CWin类成员函数获取DC
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);

3.利用CClientDC对象 (CClientDC类从CDC类派生来的)
<wbr> CClientDC派生自CDC<br><wbr>构造CClientDC对象的时候自动调用GetDC,而在析构的时候自动调用ReleaseDC.从而我们不需要<br><wbr> 显示的去调用这两个函数.只需要仅仅构造一个CClientDC对象.</wbr></wbr></wbr>

CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
----------
The CClientDC class is derived from CDC and takes care of callingthe Windows functions GetDC at construction time and ReleaseDC atdestruction time. This means that the device context associatedwith a CClientDC object is the client area of a window.

4.利用CWindowDC对象 (CWindowDC类从CDC类派生来的)
CWindowDC dc(this);//
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
-----------
The CWindowDC class is derived from CDC. It calls the WindowsfunctionsGetWindowDC at construction time andReleaseDC atdestruction time. This means that a CWindowDC object accesses theentire screen area of a CWnd (both client and nonclient areas).

5.GetParent()得到父窗口指针; GetDesktopWindow()得到屏幕窗口指针

6.利用画笔改变线条颜色和类型:
CPenpen(PS_DOT,1,RGB(0,255,0));<wbr><wbr><wbr>//构造画笔对象<br> CClientDC dc(this);CPen*pOldPen=dc.SelectObject(&amp;pen);<wbr><wbr><wbr>//将画笔选入DC<br> dc.MoveTo(m_ptOrigin);<br> dc.LineTo(point);<br> dc.SelectObject(pOldPen);<wbr><wbr><wbr>//恢复先前的画笔</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

7.使用画刷 (通常利用画刷去填充矩形区域):
使用单色画刷
CBrushbrush(RGB(255,0,0));<wbr><wbr><wbr>//构造画刷对象<br> CClientDC dc(this);<br> dc.FillRect(CRect(m_ptOrigin,point),&amp;brush);<wbr><wbr><wbr>//用指定的画刷去填充矩形区域</wbr></wbr></wbr></wbr></wbr></wbr>

使用位图画刷
CBitmap bitmap;//构造位图对象 (使用前需要初试化)
bitmap.LoadBitmap(IDB_BITMAP1);<wbr><wbr><wbr>//初试化位图对象<br> CBrushbrush(&amp;bitmap);<wbr><wbr><wbr>//构造位图画刷<br> CClientDC dc(this);<br> dc.FillRect(CRect(m_ptOrigin,point),&amp;brush);<wbr><wbr><wbr>//用指定的位图画刷去填充矩形区域</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

使用透明画刷
CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));<wbr><wbr><wbr>//获取透明画刷对象指针<br> CClientDC dc(this);<br> CBrush *pOldBrush=dc.SelectObject(pBrush); //将透明画刷选入DC<br> dc.Rectangle(CRect(m_ptOrigin,point));<br> dc.SelectObject(pOldBrush);//释放透明画刷<br> ----------<br> The GetStockObject function retrieves a handle to one of thepredefined stock pens, brushes, fonts, or palettes.<br> HGDIOBJ GetStockObject(<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>int fnObject<wbr><wbr> // type of stockobject<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

Returns a pointer to a CBrush object when given a handle to aWindows HBRUSH object.
static CBrush* PASCAL FromHandle( HBRUSH hBrush);//FromHandle是一个静态方法.故可用CBrush::FromHandle()形式调用。
----------
1)静态方法不属于某一个具体对象.而属于类本身.在类加载的时候就已经为类静态方法分配了代码去.故可用CBrush::FromHandle()形式调用。
2)静态方法中.不能引用非静态的数据成员和方法。
3)静态数据成员需要在类外单独做初始化.形式如: 变量类型 类名::变量名=初始值;

8.CDC::SetROP2方法
int SetROP2( int nDrawMode );
Sets the current drawing mode.

画线:

CClientDC dc(this);

dc.SetROP2( R2_NOT);

dc.MoveTo(p_Orgpt);

dc.LineTo(p_Endpt);

dc.MoveTo(p_Orgpt);

dc.LineTo(p_Endpt);

p_Endpt = point;//这里要记住哦!
分享到:
评论

相关推荐

    数据结构课件教案附录--VC 绘图使用初步.ppt

    本人编写用VC绘图最基本的操作,代码很少,有如何建立工程、以及演示结果,适合VC初学者

    VC绘图教程

    【VC6.0绘图教程】是一篇面向初学者的编程教程,旨在教授如何使用Visual C++ 6.0进行图形绘制和游戏开发。教程的基础要求是读者已经具备基本的C语言知识,并且建议有一定的英语基础,以便更好地理解和学习后续的高级...

    vc6.0内存绘图简单示例适用新手

    在当今图形处理日趋复杂的...通过本文的介绍,新手开发者应该对如何在 VC6.0 中实现内存绘图有了初步的了解。通过进一步的学习和实践,新手可以将这项技术应用到自己的图形程序设计中,创建更加专业和高效的图形界面。

    VC6具有初步CAD绘图功能的源代码

    在本文中,我们将深入探讨如何使用VC6(Visual C++ 6.0)开发具有初步CAD(计算机辅助设计)绘图功能的源代码。通过学习和理解这些代码,开发者可以构建一个基础的CAD应用程序,具备基本的矢量图形绘制能力,如绘制...

    vc游戏制作c语言绘图

    这是关于用c做小游戏用的一些算法,里面有时针指针,有扫雷界面。是绘制图形比用的一些实例,适用于初步入门的同学学习

    VC与Labview、Matlab编程论文资料[2].rar

    基于VC++的遥感图像处理系统初步设计.pdf 基于VC++网络通信平台的设计与开发.pdf 基于VC++语言的增压柴油机工作过程计算软件的开发.pdf 基于VC++酒店管理系统.pdf 基于VC6_0的数字图像压缩平台设计.pdf 基于VC_6_0和...

    VC与Labview、Matlab编程论文资料

    基于VC++的遥感图像处理系统初步设计.pdf 基于VC++网络通信平台的设计与开发.pdf 基于VC++语言的增压柴油机工作过程计算软件的开发.pdf 基于VC++酒店管理系统.pdf 基于VC6_0的数字图像压缩平台设计.pdf 基于VC_6_0和...

    VC与Labview、Matlab编程论文资料[4].rar

    基于VC++的遥感图像处理系统初步设计.pdf 基于VC++网络通信平台的设计与开发.pdf 基于VC++语言的增压柴油机工作过程计算软件的开发.pdf 基于VC++酒店管理系统.pdf 基于VC6_0的数字图像压缩平台设计.pdf 基于VC_6_0和...

    俄罗斯方块,用VC编写

    使用CClientDC类获取设备上下文,然后结合GDI(Graphics Device Interface)函数进行绘图。例如,用MoveToEx和LineTo绘制线,FillRect填充矩形以形成方块。 四、游戏逻辑 游戏逻辑包括方块生成、下落、旋转、碰撞...

    基于图像处理的回转滚筒内颗粒群提取方法_张立栋

    文章中提到的方法首先通过Photoshop进行初步的图像处理,然后在Matlab环境中进行深入的图像分析。关键步骤是选择合适的阈值进行图像分割,这是图像处理中的一个核心环节,它能够将图像中的颗粒群从背景中分离出来。...

    MFC VC6.0 简单贪吃蛇

    通过学习和分析这个“MFC VC6.0 简单贪吃蛇”项目,初学者不仅可以掌握MFC框架的基本使用,还能锻炼C++编程技巧,同时对游戏开发有初步了解。这是一个很好的起点,帮助编程新手在实践中提升技能,为后续更复杂的项目...

    vc++绘图讲解

    完成初步的绘图练习后,为了深入理解程序的执行过程,我们可以学习单步执行和调试技巧。通过单步执行(F10),可以观察每行代码执行后图形窗口的变化,这对于查找和修复问题非常有帮助。在调试过程中,确保图形窗口...

    vc做的简单的画硬币程序

    综上所述,创建"VC做的简单的画硬币程序"涉及到了Windows编程基础、图形用户界面设计、GDI绘图、状态管理等多个知识点。通过学习和实践,你可以更好地掌握VC和MFC的使用,进一步提升你的编程技能。在实际开发中,你...

    又一款VC 俄罗斯方块游戏.rar

    2. **图形绘制**:MFC中的CDC(Device Context)类用于控制绘图,通过SelectObject()函数选择不同的画笔、画刷和字体,进行图形绘制。在俄罗斯方块游戏中,方块、背景和得分等元素都是通过这种方法绘制的。 3. **...

    Visual C++ MFC教程

    Visual C++ MFC(Microsoft Foundation ...这只是MFC教程的初步介绍,后续章节还会涉及对话框、控件、动态链接库、数据库访问、网络编程等内容。深入学习MFC,开发者可以构建出功能强大、用户友好的Windows应用程序。

    MFC 美化对话框,各种样式的对话框。

    在这里,可以添加控件、调整大小、设置属性,初步实现对话框的基本布局和样式。 2. **对话框模板**:每个对话框都基于一个对话框模板,它包含了对话框的控件、大小和位置信息。这些信息存储在.RC文件中,可以通过...

    OpenGl实验报告.doc

    通过本次实验,他对OpenGL绘制球体和其他图形有了更充分的认识,对平移和旋转矩阵堆栈的使用也有了初步的掌握。尽管如此,公茂华同学认识到自己对OpenGL的使用以及其他相关方面还有待进一步深入学习和理解。 实验...

    UC_gui浅见

    尽管手册可能难以理解,但可以通过快速浏览获取关键概念,如控件类型、事件处理和绘图函数。 2. **实践操作** 理论学习后,动手实践是关键。你可以直接在VC(Visual C++)环境下运行UC_GUI的模拟器,这将为你提供...

    技术语言的种类与应用PPT学习教案.pptx

    学习和技术语言的使用,不仅需要掌握各种表达形式,还要熟悉它们的设计基础,如草图的绘制,包括徒手绘图、网格法绘图和基本图形的画法。最后,实际操作如绘制模型草图,是检验和提升技术语言应用能力的重要步骤,...

Global site tag (gtag.js) - Google Analytics