2012-12-24 22:43
⁄ 工业·编程
⁄ 共 2566字
在绘图前,必须先得到客户区大小和设备上下文DC。
1.获得客户区
绘图一般都是在视图窗口的客户区进行,而客户区的大小在运行时可由用户改变,为了使绘制的图形能随窗口大小自动改变,必须先得到当前客户区大小的数据(宽w和高h)。
获取客户区大小的方法有如下两种:
1)在消息响应函数OnSize中获得
利用属性窗口的信息页,在视图类中添加WM_SIZE消息的响应函数OnSize。该函数在窗口第一次显示或窗口大小被改变时会被Windows系...
MFC, UI界面阅读全文
2012-12-24 22:39
⁄ 工业·编程
⁄ 共 2005字
为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类。这些结构和类分别定义在头文件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 );
...
MFC, UI界面阅读全文
2012-12-24 22:39
⁄ 工业·编程
⁄ 共 743字
void Invalidate( BOOL bErase = TRUE ); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw...
UI界面阅读全文
2012-12-23 23:46
⁄ 工业·编程
⁄ 共 1705字
CRectTracker被称作“橡皮筋”,是我们再窗口编辑中,选中对象,进一步操作的基础。橡皮筋有两种方法:一、手写橡皮筋,这个在程序中控制也比较好,二、使用CRectTracker系统类。在这我介绍使用CRectTracker。CRectTracker具体的参数和使用大家可以参考CSDN。我主要介绍基本的自己的程序中使用到情况。
首先在XXXView类中新建一个成员变量: CRectTracker m_tracker; 其次在XXXVie...
UI界面阅读全文
2012-12-22 23:43
⁄ 工业·编程
⁄ 共 827字
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); double tan (double); 2 反三角函数 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 3 ...
c++阅读全文
2012-12-22 00:38
⁄ 工业·编程
⁄ 共 203字
point1,point2为线段2端点 (计算结果转化为0~360)
private double Get_Angle(Point point1, Point point2) { double angle = 0; angle = Math.Atan2((point2.Y - point1.Y), (point2.X - point1.X)) * 180 /Math.PI; if (angle < 0) { angle += 360; } return angle; }
代码集锦阅读全文
2012-12-22 00:18
⁄ 工业·编程
⁄ 共 1167字
看到题目,很多人想,这个问题太简单了,直接求直线方程,然后求交点,看方程组是否有解,你晕不晕?我在网上搜索了一下,很多思路都是求直线方程,求交点或求距离,不一而足。回顾高中学的线性规划知识,下面将给出一个我认为相对较好的算法,如果算法或程序有什么bug, 欢迎指正,谢谢。
已知线段AB,线段CD. 先来判断直线AB与线段CD是否相交,如果不相交,那么线段AB和线段CD肯定不相交...
代码集锦阅读全文
2012-12-22 00:12
⁄ 工业·编程
⁄ 共 494字
public boolean isIntersect(double px1,double py1,double px2,double py2,double px3,double py3,double px4,double py4)//p1-p2 is or not intersect with p3-p4 { boolean flag = false; double d = (px2-px1)*(py4-py3) - (py2-py1)*(px4-px3); if(d!=...
代码集锦阅读全文
2012-12-22 00:08
⁄ 工业·编程
⁄ 共 4947字
判断两条线段是否相交,可以采用向量积的方式来判断,如下图所示:
现定义一个函数初步判断两线段是否相交,如下代码:
/// <summary>
/// 初步根据外围框大致判断两条线段是否相交
/// </summary>
...
代码集锦阅读全文
2012-12-21 23:41
⁄ 工业·编程
⁄ 共 4722字
程序员,可以选择研究技术,也可以选择赚钱。但是以赚钱的心态去做程序员,会品尝不到技术的很多快乐。
1.橡皮筋算法原理
橡皮筋算法,指的是什么,我们都应该很清楚了。以直线为例,就是直线的一端固定,拉着直线的另一个端点,不断调整直线的位置,直到找到合适的位置后,直线才真正的画出来,前面的线不保留。
按照我们一般...
UI界面阅读全文