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

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;//这里要记住哦!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics