现在位置: 首页 > UI界面
在绘图前,必须先得到客户区大小和设备上下文DC。 1.获得客户区 绘图一般都是在视图窗口的客户区进行,而客户区的大小在运行时可由用户改变,为了使绘制的图形能随窗口大小自动改变,必须先得到当前客户区大小的数据(宽w和高h)。 获取客户区大小的方法有如下两种: 1)在消息响应函数OnSize中获得 利用属性窗口的信息页,在视图类中添加WM_SIZE消息的响应函数OnSize。该函数在窗口第一次显示或窗口大小被改变时会被Windows系...
阅读全文
为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类。这些结构和类分别定义在头文件windef.h和afxwin.h中。 1.点 1)点结构POINT 点数据结构POINT用来表示一点的x、y坐标: typedef struct tagPOINT { LONG x; LONG y; } POINT; 2)点类CPoint 点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y,其构造函数有5种: CPoint( ); CPoint( int initX, int initY ); CPoint( POINT initPt ); ...
阅读全文
2012-12-24 22:39 工业·编程 ⁄ 共 743字 暂无评论
void Invalidate( BOOL bErase = TRUE );     该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw...
阅读全文
2012-12-23 23:46 工业·编程 ⁄ 共 1705字 暂无评论
    CRectTracker被称作“橡皮筋”,是我们再窗口编辑中,选中对象,进一步操作的基础。橡皮筋有两种方法:一、手写橡皮筋,这个在程序中控制也比较好,二、使用CRectTracker系统类。在这我介绍使用CRectTracker。CRectTracker具体的参数和使用大家可以参考CSDN。我主要介绍基本的自己的程序中使用到情况。     首先在XXXView类中新建一个成员变量: CRectTracker m_tracker;  其次在XXXVie...
阅读全文
2012-12-21 23:41 工业·编程 ⁄ 共 4722字 暂无评论
     程序员,可以选择研究技术,也可以选择赚钱。但是以赚钱的心态去做程序员,会品尝不到技术的很多快乐。   1.橡皮筋算法原理       橡皮筋算法,指的是什么,我们都应该很清楚了。以直线为例,就是直线的一端固定,拉着直线的另一个端点,不断调整直线的位置,直到找到合适的位置后,直线才真正的画出来,前面的线不保留。       按照我们一般...
阅读全文
2012-12-21 23:38 工业·编程 ⁄ 共 789字 评论 1 条
橡皮筋技术,有三个过程: 1. 鼠标左键按下:记录起始点。 2. 鼠标移动:画出从起始点到现有点的直线,并删除上一条直线。 3. 鼠标左键松开:画出起始点到现有点的直线。 我是通过取反操作来进行的: dc.SetROP2(R2_NOT); 利用绘图模式绘制橡皮筋矩形 过程一: void Cdraw_line_rubber_band_skillView::OnMButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 flag = true; ...
阅读全文
2012-12-21 23:32 工业·编程 ⁄ 共 2123字 评论 1 条
一个Windows API SetROP2(int nDrawMode)的使用 该函数的主要的作用是根据nDrawMode设置的方式重新设定绘图的方式,下面就不同的nDrawMode值具体解释绘图模式是如何改变的。 首先就nDrawMode的取值有以下的情况: R2_BLACK Pixel is always black. //所有绘制出来的像素为黑色 R2_WHITE Pixel is always white. //所有绘制出来的像素为白色 R2_NOP Pixel remains unchanged. //任何绘制将不改变当前的状态 R2_NOT Pixel i...
阅读全文
注意着两种方式都要事先在对话框中拖picture控件,将其ID改为:IDC_PHOTO 看这篇文章之前建议先看一下这篇文章:VC下显示位图的几种方法 //方式一:通过加载一张已有的位图,并将其显示在指定的picture控件中 void CTestDlg::OnPaint() {     CPaintDC dc(this);     CBitmap bmp;     bmp.LoadBitmap(IDB_BITMAP1);     CDC memDC;   &...
阅读全文
2012-12-18 06:51 工业·编程 ⁄ 共 1537字 评论 1 条
要实现的功能实际上很简单,一般人都用到见惯不惯了,但是实现起来还是有点意思的。 问题详细描述:(三步) 单击鼠标左键时记录下单击点; 鼠标拖动时,显示的矩形框能够动态的跟随显示; 释放鼠标左键时擦出矩形框。 这样分析其实问题就简单一些了,只需要对鼠标的三个事件进行相应就可以了。 代码主要在三处地方修改了: 第一处:VIEW类中设置私有变量(VIEW类.h文件中) private: BOOL m_startRect;   //绘制矩...
阅读全文
方法一: 1、在资源编辑的时候选中按钮的 Owner draw 属性,不需要选择 Bitmap 属性.        按钮右键-->Styles-->Owner draw 2、在程序中定义一个CBitmapButton成员变量。         注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,         这么做并不能将按钮直...
阅读全文