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-21 23:41
⁄ 工业·编程
⁄ 共 4722字
程序员,可以选择研究技术,也可以选择赚钱。但是以赚钱的心态去做程序员,会品尝不到技术的很多快乐。
1.橡皮筋算法原理
橡皮筋算法,指的是什么,我们都应该很清楚了。以直线为例,就是直线的一端固定,拉着直线的另一个端点,不断调整直线的位置,直到找到合适的位置后,直线才真正的画出来,前面的线不保留。
按照我们一般...
UI界面阅读全文
2012-12-21 23:38
⁄ 工业·编程
⁄ 共 789字
橡皮筋技术,有三个过程:
1. 鼠标左键按下:记录起始点。
2. 鼠标移动:画出从起始点到现有点的直线,并删除上一条直线。
3. 鼠标左键松开:画出起始点到现有点的直线。
我是通过取反操作来进行的:
dc.SetROP2(R2_NOT);
利用绘图模式绘制橡皮筋矩形
过程一:
void Cdraw_line_rubber_band_skillView::OnMButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 flag = true; ...
UI界面阅读全文
2012-12-21 23:32
⁄ 工业·编程
⁄ 共 2123字
一个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...
UI界面阅读全文
2012-12-19 07:00
⁄ 工业·编程
⁄ 共 3715字
注意着两种方式都要事先在对话框中拖picture控件,将其ID改为:IDC_PHOTO
看这篇文章之前建议先看一下这篇文章:VC下显示位图的几种方法
//方式一:通过加载一张已有的位图,并将其显示在指定的picture控件中
void CTestDlg::OnPaint()
{ CPaintDC dc(this); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memDC; &...
UI界面阅读全文
2012-12-18 06:51
⁄ 工业·编程
⁄ 共 1537字
要实现的功能实际上很简单,一般人都用到见惯不惯了,但是实现起来还是有点意思的。
问题详细描述:(三步)
单击鼠标左键时记录下单击点;
鼠标拖动时,显示的矩形框能够动态的跟随显示;
释放鼠标左键时擦出矩形框。
这样分析其实问题就简单一些了,只需要对鼠标的三个事件进行相应就可以了。
代码主要在三处地方修改了:
第一处:VIEW类中设置私有变量(VIEW类.h文件中)
private: BOOL m_startRect; //绘制矩...
UI界面, VC编程技巧阅读全文
2012-12-16 06:46
⁄ 工业·编程
⁄ 共 1579字
方法一: 1、在资源编辑的时候选中按钮的 Owner draw 属性,不需要选择 Bitmap 属性. 按钮右键-->Styles-->Owner draw 2、在程序中定义一个CBitmapButton成员变量。 注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton, 这么做并不能将按钮直...
CBitmapButton, UI界面阅读全文