// HColorBar.cpp : implementation file // Download by http://www.codefans.net #include "stdafx.h" #include "HDraw.h" #include "HColorBar.h" #include "HDrawDoc.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // HColorBar HColorBar::HColorBar() { //initiate colors int index = 0; for(int i = 0; i <= 256; i += 128){ for(int j = 0; j <= 256; j += 128){ for(int k = 0; k <= 256; k +=128){ m_COLOR[index ++] = RGB(256==i?255:i, 256==j?255:j, 256==k?255:k); } } } m_COLOR[index] = RGB(1,2,3); } HColorBar::~HColorBar() { } BEGIN_MESSAGE_MAP(HColorBar, CToolBar) //{{AFX_MSG_MAP(HColorBar) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_WM_LBUTTONDBLCLK() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // HColorBar message handlers COLORREF HColorBar::GetColor() { return m_currentColor; } void HColorBar::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CRect rc; GetClientRect(&rc); //step1.1 draw color indicator frame dc.Draw3dRect(rc.left+1, rc.top+5, 33, 33, RGB(0, 0, 0), RGB(255, 255, 255)); //step1.2 draw color indicator CPen pen2(PS_SOLID, 1, m_currentColor); CBrush bru2(m_currentColor); dc.SelectObject(&pen2); dc.SelectObject(&bru2); dc.Draw3dRect(rc.left+5, rc.top+5+5, 15, 15, RGB(255, 255, 255), RGB(150, 150, 150)); dc.Rectangle(rc.left+6, rc.top+10, rc.left+29, rc.top+33); //step2.1 //initiate color rects int i = 0; for( i=0;iGetActiveDocument())); //Set color of document pDoc->m_picColor = m_currentColor; //Set color of selected strokes bool refresh = false; for(int i = 0; i < pDoc->m_strokeList.GetSize(); i ++){ if(pDoc->m_strokeList.GetAt(i)->m_bSelected) pDoc->m_strokeList.GetAt(i)->m_penColor = m_currentColor; refresh = true; } if(refresh){ pDoc->BackUp(); ((CMainFrame*)AfxGetMainWnd())->GetActiveView()->Invalidate(); } }