You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
967 B
C++
36 lines
967 B
C++
#pragma once
|
|
#include <vector>
|
|
|
|
class CDC;
|
|
class CDC;
|
|
class CCurveEx;
|
|
class CSigmaDoc;
|
|
struct HandlePoint;
|
|
|
|
class HandleDrawer
|
|
{
|
|
public:
|
|
HandleDrawer(CSigmaDoc * pDoc);
|
|
~HandleDrawer();
|
|
|
|
bool Init(CCurveEx * pCurve);
|
|
void ClearAll(CDC * pDC);
|
|
void DrawAll(CDC * pDC);
|
|
void ReDrawAll(CDC * pDC);
|
|
void DrawOneHandle(CDC * pDC, int indexOfHandle);
|
|
void DrawFocusHandle(CDC * pDC, int indexOfHandle);
|
|
//返回值:擦除节点的索引 出错或没有焦点Handle 则返回 -1
|
|
int EreaseFocusHandle(CDC * pD);
|
|
protected:
|
|
void DrawAllOrEreaseAll(CDC * pDC, bool bDrawAll);
|
|
//bDraw-true 绘制节点 false-擦除节点 bFocus-true 是焦点Handle false-普通Handle
|
|
void DrawOrEreaseOneHandle(CDC * pDC, HandlePoint * handlePt, bool bDraw, bool bFocus);
|
|
void DrawHandle(CDC* pDC, HandlePoint * handlePt, bool bFocus);
|
|
void Release();
|
|
private:
|
|
COLORREF m_colorHandles;
|
|
COLORREF m_headColor;
|
|
CSigmaDoc * m_pDoc;
|
|
HandlePoint * m_focusHandle;
|
|
std::vector<HandlePoint *> m_handlePts;
|
|
}; |