⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagecamview.cpp

📁 《数字图象工程案例》原码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// imageCAMView.cpp : implementation of the CimageCAMView class
//

#include "stdafx.h"
#include "SelectPaste.h"
#include "imageCAM.h"
#include "ChildFrm.h"
#include "MainFrm.h"
#include "imageCAMDoc.h"
#include "imageCAMView.h"
#include "SelectparDlg.h"
#include "GrayDlg.h"
#include "PenWidth.h"
#include "ColorBitsDlg.h"
#include "AdjustColorDlg.h" 
#include "BCDlg.h"
#include "ConvoluteDlg.h"
#include "Scale.h"
#include "CanvasSize.h"
#include "FollowingDlg.h"
#include "windowsx.h"
#include "toolbase.h"
#include "OutputDialog.h"
#define PIXEL_OFFSET1(i, j, nWidthBytes)	\
(LONG)((LONG)(i)*(LONG)(nWidthBytes) + (LONG)(j)*3)

#define PI  3.1415926
//struct ToolBaseStr *pToolBaseStr;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//
/////////////////////////////////////////////////////////////////////////////
// CimageCAMView
bool WriteStringToFile(CStdioFile *pFile,CString StrToWrite)
{
	TRY
	{
		pFile->WriteString(StrToWrite);
	}
	CATCH (CException, e)
	{
		return false;
	}
	END_CATCH	
		return true;
}
IMPLEMENT_DYNCREATE(CimageCAMView, CScrollView)

BEGIN_MESSAGE_MAP(CimageCAMView, CScrollView)
//{{AFX_MSG_MAP(CimageCAMView)
ON_COMMAND(IDM_PENCOLOR, OnPencolor)
ON_COMMAND(IDM_FILLCOLOR, OnFillcolor)
ON_COMMAND(IDM_SELECT, OnSelect)
ON_UPDATE_COMMAND_UI(IDM_SELECT, OnUpdateSelect)
ON_COMMAND(IDM_PICKER, OnPicker)
ON_UPDATE_COMMAND_UI(IDM_PICKER, OnUpdatePicker)
ON_COMMAND(IDM_ERASER, OnEraser)
ON_UPDATE_COMMAND_UI(IDM_ERASER, OnUpdateEraser)
ON_COMMAND(IDM_FREELINE, OnFreeline)
ON_UPDATE_COMMAND_UI(IDM_FREELINE, OnUpdateFreeline)
ON_COMMAND(IDM_LINE, OnLine)
ON_UPDATE_COMMAND_UI(IDM_LINE, OnUpdateLine)
ON_COMMAND(IDM_CURVE, OnCurve)
ON_UPDATE_COMMAND_UI(IDM_CURVE, OnUpdateCurve)
ON_COMMAND(IDM_RECT_H, OnRectH)
ON_UPDATE_COMMAND_UI(IDM_RECT_H, OnUpdateRectH)
ON_COMMAND(IDM_RECT_F, OnRectF)
ON_UPDATE_COMMAND_UI(IDM_RECT_F, OnUpdateRectF)
ON_COMMAND(IDM_ROUNDRECT_H, OnRoundrectH)
ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_H, OnUpdateRoundrectH)
ON_COMMAND(IDM_ROUNDRECT_F, OnRoundrectF)
ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_F, OnUpdateRoundrectF)
ON_COMMAND(IDM_ELLIPSE_H, OnEllipseH)
ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_H, OnUpdateEllipseH)
ON_COMMAND(IDM_ELLIPSE_F, OnEllipseF)
ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_F, OnUpdateEllipseF)
ON_COMMAND(IDM_FILL, OnFill)
ON_UPDATE_COMMAND_UI(IDM_FILL, OnUpdateFill)
ON_COMMAND(IDM_TEXT, OnText)
ON_UPDATE_COMMAND_UI(IDM_TEXT, OnUpdateText)
ON_COMMAND(IDM_SOLID, OnSolid)
ON_UPDATE_COMMAND_UI(IDM_SOLID, OnUpdateSolid)
ON_COMMAND(IDM_DASH, OnDash)
ON_UPDATE_COMMAND_UI(IDM_DASH, OnUpdateDash)
ON_COMMAND(IDM_DOT, OnDot)
ON_UPDATE_COMMAND_UI(IDM_DOT, OnUpdateDot)
ON_COMMAND(IDM_PW_1, OnPw1)
ON_UPDATE_COMMAND_UI(IDM_PW_1, OnUpdatePw1)
ON_COMMAND(IDM_PW_2, OnPw2)
ON_UPDATE_COMMAND_UI(IDM_PW_2, OnUpdatePw2)
ON_COMMAND(IDM_PW_3, OnPw3)
ON_UPDATE_COMMAND_UI(IDM_PW_3, OnUpdatePw3)
ON_COMMAND(IDM_PW_4, OnPw4)
ON_UPDATE_COMMAND_UI(IDM_PW_4, OnUpdatePw4)
ON_COMMAND(IDM_PW_5, OnPw5)
ON_UPDATE_COMMAND_UI(IDM_PW_5, OnUpdatePw5)
ON_COMMAND(IDM_PW_OTHER, OnPwOther)
ON_UPDATE_COMMAND_UI(IDM_PW_OTHER, OnUpdatePwOther)
ON_COMMAND(IDM_FONT, OnFont)
ON_COMMAND(IDM_LEFT, OnLeft)
ON_UPDATE_COMMAND_UI(IDM_LEFT, OnUpdateLeft)
ON_COMMAND(IDM_CENTER, OnCenter)
ON_UPDATE_COMMAND_UI(IDM_CENTER, OnUpdateCenter)
ON_COMMAND(IDM_RIGHT, OnRight)
ON_UPDATE_COMMAND_UI(IDM_RIGHT, OnUpdateRight)
ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_COMMAND(ID_EDIT_CLEAR, OnEditClear)
ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR, OnUpdateEditClear)
ON_COMMAND(IDM_COPYTO, OnCopyto)
ON_UPDATE_COMMAND_UI(IDM_COPYTO, OnUpdateCopyto)
ON_COMMAND(IDM_PASTEFROM, OnPastefrom)
ON_UPDATE_COMMAND_UI(IDM_PASTEFROM, OnUpdatePastefrom)
ON_COMMAND(IDM_NORTHWEST, OnNorthwest)
ON_UPDATE_COMMAND_UI(IDM_NORTHWEST, OnUpdateNorthwest)
ON_COMMAND(IDM_NORTHEAST, OnNortheast)
ON_UPDATE_COMMAND_UI(IDM_NORTHEAST, OnUpdateNortheast)
ON_COMMAND(IDM_NORTH, OnNorth)
ON_UPDATE_COMMAND_UI(IDM_NORTH, OnUpdateNorth)
ON_COMMAND(IDM_MM, OnMm)
ON_UPDATE_COMMAND_UI(IDM_MM, OnUpdateMm)
ON_COMMAND(IDM_LF3, OnLf3)
ON_UPDATE_COMMAND_UI(IDM_LF3, OnUpdateLf3)
ON_COMMAND(IDM_LF2, OnLf2)
ON_UPDATE_COMMAND_UI(IDM_LF2, OnUpdateLf2)
ON_COMMAND(IDM_LF1, OnLf1)
ON_COMMAND(IDM_INCH, OnInch)
ON_UPDATE_COMMAND_UI(IDM_INCH, OnUpdateInch)
ON_COMMAND(IDM_HOUGH, OnHough)
ON_UPDATE_COMMAND_UI(IDM_HOUGH, OnUpdateHough)
ON_COMMAND(IDM_HORZ, OnHorz)
ON_UPDATE_COMMAND_UI(IDM_HORZ, OnUpdateHorz)
ON_COMMAND(IDM_HMIRROR, OnHmirror)
ON_UPDATE_COMMAND_UI(IDM_HMIRROR, OnUpdateHmirror)
ON_COMMAND(IDM_HF3, OnHf3)
ON_UPDATE_COMMAND_UI(IDM_HF3, OnUpdateHf3)
ON_COMMAND(IDM_HF2, OnHf2)
ON_UPDATE_COMMAND_UI(IDM_HF2, OnUpdateHf2)
ON_COMMAND(IDM_HF1, OnHf1)
ON_UPDATE_COMMAND_UI(IDM_HF1, OnUpdateHf1)
ON_COMMAND(IDM_GRAY, OnGray)
ON_UPDATE_COMMAND_UI(IDM_GRAY, OnUpdateGray)
ON_COMMAND(IDM_CROP, OnCrop)
ON_UPDATE_COMMAND_UI(IDM_CROP, OnUpdateCrop)
ON_COMMAND(IDM_COLORBITS, OnColorbits)
ON_COMMAND(IDM_CANVASSIZE, OnCanvassize)
ON_UPDATE_COMMAND_UI(IDM_CANVASSIZE, OnUpdateCanvassize)
ON_COMMAND(IDM_BC, OnBc)
ON_UPDATE_COMMAND_UI(IDM_BC, OnUpdateBc)
ON_COMMAND(IDM_ADJUSTCOLOR, OnAdjustcolor)
ON_UPDATE_COMMAND_UI(IDM_ADJUSTCOLOR, OnUpdateAdjustcolor)
ON_COMMAND(IDM_SCALE, OnScale)
ON_UPDATE_COMMAND_UI(IDM_SCALE, OnUpdateScale)
ON_COMMAND(IDM_RULER, OnRuler)
ON_UPDATE_COMMAND_UI(IDM_RULER, OnUpdateRuler)
ON_COMMAND(IDM_VMIRROR, OnVmirror)
ON_COMMAND(IDM_SELECTPASTE, OnSelectpaste)
ON_UPDATE_COMMAND_UI(IDM_SELECTPASTE, OnUpdateSelectpaste)
ON_COMMAND(IDM_PIXEL, OnPixel)
ON_UPDATE_COMMAND_UI(IDM_PIXEL, OnUpdatePixel)
ON_COMMAND(IDM_IMAGE_THIN, OnImageThin)
ON_COMMAND(IDM_IMAGE_FTREAT, OnImageFtreat)
ON_COMMAND(IDM_IMAGE_OUTPUT, OnImageOutput)
ON_COMMAND(IDM_VERT, OnVert)
ON_UPDATE_COMMAND_UI(IDM_VERT, OnUpdateVert)
ON_COMMAND(IDM_VERTHORZ, OnVerthorz)
ON_UPDATE_COMMAND_UI(IDM_VERTHORZ, OnUpdateVerthorz)
ON_COMMAND(IDM_EAST, OnEast)
ON_UPDATE_COMMAND_UI(IDM_EAST, OnUpdateEast)
ON_COMMAND(IDM_SOUTHEAST, OnSoutheast)
ON_UPDATE_COMMAND_UI(IDM_SOUTHEAST, OnUpdateSoutheast)
ON_COMMAND(IDM_SOUTH, OnSouth)
ON_UPDATE_COMMAND_UI(IDM_SOUTH, OnUpdateSouth)
ON_COMMAND(IDM_SOUTHWEST, OnSouthwest)
ON_UPDATE_COMMAND_UI(IDM_SOUTHWEST, OnUpdateSouthwest)
ON_COMMAND(IDM_WEST, OnWest)
ON_UPDATE_COMMAND_UI(IDM_WEST, OnUpdateWest)
ON_COMMAND(IDM_SOBEL, OnSobel)
ON_UPDATE_COMMAND_UI(IDM_SOBEL, OnUpdateSobel)
ON_COMMAND(IDM_ROTATE, OnRotate)
ON_UPDATE_COMMAND_UI(IDM_ROTATE, OnUpdateRotate)
ON_COMMAND(IDM_ROTATE180, OnRotate180)
ON_UPDATE_COMMAND_UI(IDM_ROTATE180, OnUpdateRotate180)
ON_COMMAND(IDM_ROTATE270, OnRotate270)
ON_UPDATE_COMMAND_UI(IDM_ROTATE270, OnUpdateRotate270)
ON_COMMAND(IDM_ROTATEOTHER, OnRotateother)
ON_UPDATE_COMMAND_UI(IDM_ROTATEOTHER, OnUpdateRotateother)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_CREATE()
ON_WM_SETCURSOR()
ON_UPDATE_COMMAND_UI(IDM_LF1, OnUpdateLf1)
ON_COMMAND(IDM_MEDIANFILTER, OnMedianfilter)
ON_UPDATE_COMMAND_UI(IDM_MEDIANFILTER, OnUpdateMedianfilter)
ON_COMMAND(IDC_ZOOMOUT, OnZoomout)
ON_UPDATE_COMMAND_UI(IDC_ZOOMOUT, OnUpdateZoomout)
ON_COMMAND(IDC_ZOOMIN, OnZoomin)
ON_UPDATE_COMMAND_UI(IDC_ZOOMIN, OnUpdateZoomin)
ON_WM_KEYDOWN()
ON_COMMAND(IDC_TOOLSBASE, OnToolsbase)
ON_COMMAND(IDC_IMAGE_NC, OnimageCAM)
ON_COMMAND(IDC_ZOOMMODE, OnZoommode)
ON_COMMAND(IDC_ZOOMNORMAL, OnZoomnormal)
ON_UPDATE_COMMAND_UI(IDC_ZOOMNORMAL, OnUpdateZoomnormal)
ON_UPDATE_COMMAND_UI(IDC_ZOOMMODE, OnUpdateZoommode)
ON_WM_SIZE()
ON_UPDATE_COMMAND_UI(IDM_VMIRROR, OnUpdateVmirror)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
ON_COMMAND(IDC_OUTLINE, OnOutline)
ON_COMMAND(IDC_OUTLINENC, OnOutlinenc)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
ON_COMMAND(IDC_PEN_COLOR, OnPencolor1)
ON_COMMAND(IDC_FILL_COLOR, OnFillcolor1)
ON_COMMAND_RANGE(IDC_COLORTABLE_BASE, IDC_COLORTABLE_BASE+256, OnPenColorGrid)
ON_MESSAGE(WM_REALIZEPAL, OnRealizePal)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CimageCAMView construction/destruction

CimageCAMView::CimageCAMView()
{
	// TODO: add construction code here
	m_nLengthUnit = MM_TEXT;
	m_pDib = NULL;
	m_pFloatWnd = NULL;
	m_bDrawingRubber = FALSE;
	m_bDrawFreeline = FALSE;
	m_bErasing = FALSE;
	m_nDrawCurveStep = -1;
	m_bDrawCurve = FALSE;
	m_nDrawType = DT_SELECT;
	m_nPenStyle = PS_SOLID;
	m_nPenWidth = 1;
	m_crPenColor = RGB(0,0,0);
	m_crFillColor = RGB(0,0,0);	//m_crFillColor = RGB(255,255,255);//	
	m_nTextAlign = DT_LEFT;
	m_hCursorGeneralDraw = NULL;
	m_hCursorFreeline = NULL;
	m_hCursorEraser = NULL;
	m_hCursorPicker = NULL;
	m_hCursorFill = NULL;
	m_hCursorCurve = NULL;
    m_zoommode=1;
}

CimageCAMView::~CimageCAMView()
{
}

BOOL CimageCAMView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	m_hCursorGeneralDraw = AfxGetApp()->LoadCursor(IDC_CURSORGENERALDRAW);
	cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS,
		m_hCursorGeneralDraw, 
		(HBRUSH)(COLOR_WINDOW-1),
		AfxGetApp()->LoadIcon(IDR_IMAGETYPE));
	
	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CimageCAMView drawing

void CimageCAMView::OnDraw(CDC* pDC)
{
	CimageCAMDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	
	
	if (! pDoc->m_pDib->IsEmpty())
	{ 
		//m_pDib->ratio=2;
		m_pDib->Display(pDC, 0, 0,m_pDib->ratio,SRCCOPY);
	}
	if (::IsWindow(m_EditText.m_hWnd))
	{
		CRect rc;
		m_EditText.GetWindowRect(&rc);
		ScreenToClient(&rc);
		rc.InflateRect(2,2);
		
		CPen pen1(PS_SOLID,1,RGB(255,255,255));
		CPen pen2(PS_DOT,1,RGB(0,0,0));
		CBrush *pOldBrush = pDC->SelectObject(CBrush::FromHandle((HBRUSH)::GetStockObject(NULL_BRUSH)));
		CPen *pOldPen = pDC->SelectObject(&pen1);
		pDC->Rectangle(&rc);
		pDC->SelectObject(&pen2);
		pDC->Rectangle(&rc);
		pDC->SelectObject(pOldBrush);
		pDC->SelectObject(pOldPen);
	}
	
}

void CimageCAMView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
	
	CimageCAMDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	//	m_pDib = pDoc->m_pDib;
    m_pDib->ratio=1;
	CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
}

/////////////////////////////////////////////////////////////////////////////
// CimageCAMView printing

BOOL CimageCAMView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CimageCAMView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CimageCAMView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CimageCAMView diagnostics

#ifdef _DEBUG
void CimageCAMView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CimageCAMView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CimageCAMDoc* CimageCAMView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CimageCAMDoc)));
	return (CimageCAMDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CimageCAMView message handlers
void CimageCAMView::SetStatusBarBitCount(WORD wBitcount)
{
	CString str;
	switch (wBitcount)
	{
	case 1:
		str.LoadString(IDS_BITCOUNT_1);
		break;
	case 4:
		str.LoadString(IDS_BITCOUNT_4);
		break;
	case 8:
		str.LoadString(IDS_BITCOUNT_8);
		break;
	case 24:
	default:
		str.LoadString(IDS_BITCOUNT_24);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_BIT_COUNT, str);
}

void CimageCAMView::SetStatusBarLengthUnit(int nUnit)
{
	CString str;
	switch (m_nLengthUnit)
	{
	case MM_HIENGLISH:
		str.LoadString(IDS_LENGTH_UNIT_INCH);
		break;
	case MM_HIMETRIC:
		str.LoadString(IDS_LENGTH_UNIT_MM);
		break;
	case MM_TEXT:
	default:
		str.LoadString(IDS_LENGTH_UNIT_PIXEL);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_LENGTH_UNIT, str);
}

void CimageCAMView::SetStatusBarCursorPosition(CPoint point)
{	CimageCAMDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
m_pDib = pDoc->m_pDib;
CSize sizeTotal(m_pDib->GetWidth(),m_pDib->GetHeight());
CWindowDC dc(this);
dc.LPtoDP(&point);
dc.LPtoDP(&sizeTotal);
int nOldUnit = dc.SetMapMode(m_nLengthUnit);
dc.DPtoLP(&point);
dc.DPtoLP(&sizeTotal);
dc.SetMapMode(nOldUnit);

CString msg;
double fCX = abs(point.x), fCY = sizeTotal.cy-abs(point.y);
switch (m_nLengthUnit)
{
case MM_TEXT:
	msg.Format("%d,%d", (int)fCX, (int)fCY);
	break;
case MM_HIENGLISH:
	fCX /= 1000.0;
	fCY /= 1000.0;
	msg.Format("%.2f,%.2f", fCX, fCY);
	break;
case MM_HIMETRIC:
	fCX /= 100.0;
	fCY /= 100.0;
	msg.Format("%.2f,%.2f", fCX, fCY);
	break;
}
CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
ASSERT_KINDOF(CMainFrame, pMainFrame);
pMainFrame->m_wndStatusBar.SetPaneText(PANE_CURSOR_POSITION, msg);
}

void CimageCAMView::SetStatusBarImageSize(CSize size)
{
	CWindowDC dc(this);
	dc.LPtoDP(&size);
	int nOldUnit = dc.SetMapMode(m_nLengthUnit);
	dc.DPtoLP(&size);
	dc.SetMapMode(nOldUnit);
	
	CString msg;
	double fCX = abs(size.cx), fCY = abs(size.cy);
	switch (m_nLengthUnit)
	{
	case MM_TEXT:
		msg.Format("%d,%d", (int)fCX, (int)fCY);
		break;
	case MM_HIENGLISH:
		fCX /= 1000.0;
		fCY /= 1000.0;
		msg.Format("%.2f,%.2f", fCX, fCY);
		break;
	case MM_HIMETRIC:
		fCX /= 100.0;
		fCY /= 100.0;
		msg.Format("%.2f,%.2f", fCX, fCY);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_IMAGE_SIZE, msg);
}
void CimageCAMView::ShowPenColor()
{
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	pAppFrame->m_wndPaintParamBar.ShowPenColor(m_crPenColor);
}

void CimageCAMView::ShowFillColor()
{
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	pAppFrame->m_wndPaintParamBar.ShowFillColor(m_crFillColor);
}

void CimageCAMView::ShowPenWidth()
{
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	pAppFrame->m_wndPaintParamBar.ShowPenWidth(m_nPenWidth);
}

void CimageCAMView::ShowPenStyle()
{
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	pAppFrame->m_wndPaintParamBar.ShowPenStyle(m_nPenStyle);
}

void CimageCAMView::ShowColorGrid()
{
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	
	pAppFrame->m_wndPaintParamBar.ShowColorGrid((HPALETTE)m_pDib->m_pPalette->GetSafeHandle());
}

void CimageCAMView::OnPenColorGrid(UINT nID)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -