📄 imageboardview.cpp
字号:
// ImageBoardView.cpp : implementation of the CImageBoardView class
//
#include "stdafx.h"
#include "ImageBoard.h"
#include "ChildFrm.h"
#include "MainFrm.h"
#include "PenWidth.h"
#include "SelectPasteDlg.h"
#include "Scale.h"
#include "CanvasSize.h"
#include "GrayDlg.h"
#include "BCDlg.h"
#include "AdjustColorDlg.h"
#include "ColorBitsDlg.h"
#include "ConvoluteDlg.h"
#include "RotateAngle.h"
#include "GammaCorrection.h"
#include "ExposureDlg.h"
#include "EmbossmentDlg.h"
#include "SpreadDlg.h"
#include "ImageBoardDoc.h"
#include "ImageBoardView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView
IMPLEMENT_DYNCREATE(CImageBoardView, CScrollView)
BEGIN_MESSAGE_MAP(CImageBoardView, CScrollView)
//{{AFX_MSG_MAP(CImageBoardView)
ON_COMMAND(IDM_EAST, OnEast)
ON_UPDATE_COMMAND_UI(IDM_EAST, OnUpdateEast)
ON_COMMAND(IDM_HF1, OnHf1)
ON_UPDATE_COMMAND_UI(IDM_HF1, OnUpdateHf1)
ON_COMMAND(IDM_HF2, OnHf2)
ON_UPDATE_COMMAND_UI(IDM_HF2, OnUpdateHf2)
ON_COMMAND(IDM_HF3, OnHf3)
ON_UPDATE_COMMAND_UI(IDM_HF3, OnUpdateHf3)
ON_COMMAND(IDM_HORZ, OnHorz)
ON_UPDATE_COMMAND_UI(IDM_HORZ, OnUpdateHorz)
ON_COMMAND(IDM_LAP1, OnLap1)
ON_UPDATE_COMMAND_UI(IDM_LAP1, OnUpdateLap1)
ON_COMMAND(IDM_LAP2, OnLap2)
ON_UPDATE_COMMAND_UI(IDM_LAP2, OnUpdateLap2)
ON_COMMAND(IDM_LAP3, OnLap3)
ON_UPDATE_COMMAND_UI(IDM_LAP3, OnUpdateLap3)
ON_COMMAND(IDM_LAP4, OnLap4)
ON_UPDATE_COMMAND_UI(IDM_LAP4, OnUpdateLap4)
ON_COMMAND(IDM_LF1, OnLf1)
ON_UPDATE_COMMAND_UI(IDM_LF1, OnUpdateLf1)
ON_COMMAND(IDM_LF2, OnLf2)
ON_UPDATE_COMMAND_UI(IDM_LF2, OnUpdateLf2)
ON_COMMAND(IDM_LF3, OnLf3)
ON_UPDATE_COMMAND_UI(IDM_LF3, OnUpdateLf3)
ON_COMMAND(IDM_NORTH, OnNorth)
ON_UPDATE_COMMAND_UI(IDM_NORTH, OnUpdateNorth)
ON_COMMAND(IDM_NORTHEAST, OnNortheast)
ON_UPDATE_COMMAND_UI(IDM_NORTHEAST, OnUpdateNortheast)
ON_COMMAND(IDM_NORTHWEST, OnNorthwest)
ON_UPDATE_COMMAND_UI(IDM_NORTHWEST, OnUpdateNorthwest)
ON_COMMAND(IDM_SOUTH, OnSouth)
ON_UPDATE_COMMAND_UI(IDM_SOUTH, OnUpdateSouth)
ON_COMMAND(IDM_SOUTHEAST, OnSoutheast)
ON_UPDATE_COMMAND_UI(IDM_SOUTHEAST, OnUpdateSoutheast)
ON_COMMAND(IDM_SOUTHWEST, OnSouthwest)
ON_UPDATE_COMMAND_UI(IDM_SOUTHWEST, OnUpdateSouthwest)
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_WEST, OnWest)
ON_UPDATE_COMMAND_UI(IDM_WEST, OnUpdateWest)
ON_COMMAND(IDM_MEDIANFILTER, OnMedianfilter)
ON_UPDATE_COMMAND_UI(IDM_MEDIANFILTER, OnUpdateMedianfilter)
ON_COMMAND(IDM_INCH, OnInch)
ON_COMMAND(IDM_MM, OnMm)
ON_COMMAND(IDM_PIXEL, OnPixel)
ON_COMMAND(IDM_SELECT, OnSelect)
ON_COMMAND(IDM_CURVE, OnCurve)
ON_COMMAND(IDM_LINE, OnLine)
ON_COMMAND(IDM_FREELINE, OnFreeline)
ON_COMMAND(IDM_RECT_H, OnRectH)
ON_COMMAND(IDM_RECT_F, OnRectF)
ON_COMMAND(IDM_ELLIPSE_H, OnEllipseH)
ON_COMMAND(IDM_ELLIPSE_F, OnEllipseF)
ON_COMMAND(IDM_TEXT, OnText)
ON_COMMAND(IDM_FILL, OnFill)
ON_COMMAND(IDM_PENCOLOR, OnPencolor)
ON_COMMAND(IDM_SOLID, OnSolid)
ON_COMMAND(IDM_DASH, OnDash)
ON_COMMAND(IDM_DOT, OnDot)
ON_COMMAND(IDM_FILLCOLOR, OnFillcolor)
ON_UPDATE_COMMAND_UI(IDM_SELECT, OnUpdateSelect)
ON_UPDATE_COMMAND_UI(IDM_CURVE, OnUpdateCurve)
ON_UPDATE_COMMAND_UI(IDM_LINE, OnUpdateLine)
ON_UPDATE_COMMAND_UI(IDM_FREELINE, OnUpdateFreeline)
ON_UPDATE_COMMAND_UI(IDM_RECT_H, OnUpdateRectH)
ON_UPDATE_COMMAND_UI(IDM_RECT_F, OnUpdateRectF)
ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_H, OnUpdateEllipseH)
ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_F, OnUpdateEllipseF)
ON_UPDATE_COMMAND_UI(IDM_FILL, OnUpdateFill)
ON_UPDATE_COMMAND_UI(IDM_TEXT, OnUpdateText)
ON_UPDATE_COMMAND_UI(IDM_DASH, OnUpdateDash)
ON_UPDATE_COMMAND_UI(IDM_DOT, OnUpdateDot)
ON_UPDATE_COMMAND_UI(IDM_SOLID, OnUpdateSolid)
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_6, OnPw6)
ON_UPDATE_COMMAND_UI(IDM_PW_6, OnUpdatePw6)
ON_COMMAND(IDM_PW_7, OnPw7)
ON_UPDATE_COMMAND_UI(IDM_PW_7, OnUpdatePw7)
ON_COMMAND(IDM_PW_8, OnPw8)
ON_UPDATE_COMMAND_UI(IDM_PW_8, OnUpdatePw8)
ON_COMMAND(IDM_PW_OTHER, OnPwOther)
ON_UPDATE_COMMAND_UI(IDM_PW_OTHER, OnUpdatePwOther)
ON_COMMAND(IDM_ROUNDRECT_F, OnRoundrectF)
ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_F, OnUpdateRoundrectF)
ON_COMMAND(IDM_ROUNDRECT_H, OnRoundrectH)
ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_H, OnUpdateRoundrectH)
ON_COMMAND(IDM_FONT, OnFont)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
ON_COMMAND(IDM_SELECTPASTE, OnSelectpaste)
ON_UPDATE_COMMAND_UI(IDM_SELECTPASTE, OnUpdateSelectpaste)
ON_COMMAND(IDM_CROP, OnCrop)
ON_UPDATE_COMMAND_UI(IDM_CROP, OnUpdateCrop)
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_HMIRROR, OnHmirror)
ON_UPDATE_COMMAND_UI(IDM_HMIRROR, OnUpdateHmirror)
ON_COMMAND(IDM_VMIRROR, OnVmirror)
ON_UPDATE_COMMAND_UI(IDM_VMIRROR, OnUpdateVmirror)
ON_COMMAND(IDM_SCALE, OnScale)
ON_UPDATE_COMMAND_UI(IDM_SCALE, OnUpdateScale)
ON_COMMAND(IDM_CANVASSIZE, OnCanvassize)
ON_UPDATE_COMMAND_UI(IDM_CANVASSIZE, OnUpdateCanvassize)
ON_COMMAND(IDM_LEFT, OnLeft)
ON_COMMAND(IDM_CENTER, OnCenter)
ON_COMMAND(IDM_RIGHT, OnRight)
ON_UPDATE_COMMAND_UI(IDM_CENTER, OnUpdateCenter)
ON_UPDATE_COMMAND_UI(IDM_LEFT, OnUpdateLeft)
ON_UPDATE_COMMAND_UI(IDM_RIGHT, OnUpdateRight)
ON_COMMAND(IDM_ADJUSTCOLOR, OnAdjustcolor)
ON_UPDATE_COMMAND_UI(IDM_ADJUSTCOLOR, OnUpdateAdjustcolor)
ON_COMMAND(IDM_BC, OnBc)
ON_UPDATE_COMMAND_UI(IDM_BC, OnUpdateBc)
ON_COMMAND(IDM_COLORBITS, OnColorbits)
ON_UPDATE_COMMAND_UI(IDM_COLORBITS, OnUpdateColorbits)
ON_COMMAND(IDM_GRAY, OnGray)
ON_UPDATE_COMMAND_UI(IDM_GRAY, OnUpdateGray)
ON_WM_LBUTTONUP()
ON_WM_DESTROY()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_CTLCOLOR()
ON_WM_CREATE()
ON_WM_SETCURSOR()
ON_COMMAND(ID_EDIT_CLEAR, OnEditClear)
ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR, OnUpdateEditClear)
ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll)
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
ON_COMMAND(IDM_RED, OnRed)
ON_UPDATE_COMMAND_UI(IDM_RED, OnUpdateRed)
ON_COMMAND(IDM_GREEN, OnGreen)
ON_UPDATE_COMMAND_UI(IDM_GREEN, OnUpdateGreen)
ON_COMMAND(IDM_BLUE, OnBlue)
ON_UPDATE_COMMAND_UI(IDM_BLUE, OnUpdateBlue)
ON_COMMAND(IDM_GETBLUE, OnGetblue)
ON_UPDATE_COMMAND_UI(IDM_GETBLUE, OnUpdateGetblue)
ON_COMMAND(IDM_GETGREEN, OnGetgreen)
ON_UPDATE_COMMAND_UI(IDM_GETGREEN, OnUpdateGetgreen)
ON_COMMAND(IDM_GETRED, OnGetred)
ON_UPDATE_COMMAND_UI(IDM_GETRED, OnUpdateGetred)
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_ERASER, OnEraser)
ON_UPDATE_COMMAND_UI(IDM_ERASER, OnUpdateEraser)
ON_COMMAND(IDM_PICKER, OnPicker)
ON_UPDATE_COMMAND_UI(IDM_PICKER, OnUpdatePicker)
ON_COMMAND(IDM_CLOSE_H, OnCloseH)
ON_UPDATE_COMMAND_UI(IDM_CLOSE_H, OnUpdateCloseH)
ON_COMMAND(IDM_CLOSE_V, OnCloseV)
ON_UPDATE_COMMAND_UI(IDM_CLOSE_V, OnUpdateCloseV)
ON_COMMAND(IDM_DILATION_H, OnDilationH)
ON_UPDATE_COMMAND_UI(IDM_DILATION_H, OnUpdateDilationH)
ON_COMMAND(IDM_DILATION_V, OnDilationV)
ON_UPDATE_COMMAND_UI(IDM_DILATION_V, OnUpdateDilationV)
ON_COMMAND(IDM_EROSION_H, OnErosionH)
ON_UPDATE_COMMAND_UI(IDM_EROSION_H, OnUpdateErosionH)
ON_COMMAND(IDM_EROSION_V, OnErosionV)
ON_UPDATE_COMMAND_UI(IDM_EROSION_V, OnUpdateErosionV)
ON_COMMAND(IDM_OPEN_H, OnOpenH)
ON_UPDATE_COMMAND_UI(IDM_OPEN_H, OnUpdateOpenH)
ON_COMMAND(IDM_OPEN_V, OnOpenV)
ON_UPDATE_COMMAND_UI(IDM_OPEN_V, OnUpdateOpenV)
ON_COMMAND(IDM_THIN, OnThin)
ON_UPDATE_COMMAND_UI(IDM_THIN, OnUpdateThin)
ON_COMMAND(IDM_FFT, OnFft)
ON_UPDATE_COMMAND_UI(IDM_FFT, OnUpdateFft)
ON_COMMAND(IDM_DCT, OnDct)
ON_UPDATE_COMMAND_UI(IDM_DCT, OnUpdateDct)
ON_COMMAND(IDM_WALH, OnWalh)
ON_UPDATE_COMMAND_UI(IDM_WALH, OnUpdateWalh)
ON_COMMAND(IDM_CONTOUR_H, OnContourH)
ON_UPDATE_COMMAND_UI(IDM_CONTOUR_H, OnUpdateContourH)
ON_COMMAND(IDM_CONTOUR_V, OnContourV)
ON_UPDATE_COMMAND_UI(IDM_CONTOUR_V, OnUpdateContourV)
ON_COMMAND(IDM_ROTATE_ANGLE, OnRotateAngle)
ON_UPDATE_COMMAND_UI(IDM_ROTATE_ANGLE, OnUpdateRotateAngle)
ON_COMMAND(IDM_CORRECTGAMMA, OnCorrectgamma)
ON_UPDATE_COMMAND_UI(IDM_CORRECTGAMMA, OnUpdateCorrectgamma)
ON_COMMAND(IDM_DIFFERENCEEDGEDETECT, OnDifferenceedgedetect)
ON_UPDATE_COMMAND_UI(IDM_DIFFERENCEEDGEDETECT, OnUpdateDifferenceedgedetect)
ON_COMMAND(IDM_EMBOSSMENT, OnEmbossment)
ON_UPDATE_COMMAND_UI(IDM_EMBOSSMENT, OnUpdateEmbossment)
ON_COMMAND(IDM_EXPOSURE, OnExposure)
ON_UPDATE_COMMAND_UI(IDM_EXPOSURE, OnUpdateExposure)
ON_COMMAND(IDM_HOMOEDGEDETECT, OnHomoedgedetect)
ON_UPDATE_COMMAND_UI(IDM_HOMOEDGEDETECT, OnUpdateHomoedgedetect)
ON_COMMAND(IDM_NEGATIVE, OnNegative)
ON_UPDATE_COMMAND_UI(IDM_NEGATIVE, OnUpdateNegative)
ON_COMMAND(IDM_SOBELED, OnSobeled)
ON_UPDATE_COMMAND_UI(IDM_SOBELED, OnUpdateSobeled)
ON_COMMAND(IDM_SPREAD, OnSpread)
ON_UPDATE_COMMAND_UI(IDM_SPREAD, OnUpdateSpread)
ON_COMMAND(IDM_HOUGHED, OnHoughed)
ON_UPDATE_COMMAND_UI(IDM_HOUGHED, OnUpdateHoughed)
ON_COMMAND(IDM_CANNYED, OnCannyed)
ON_UPDATE_COMMAND_UI(IDM_CANNYED, OnUpdateCannyed)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView construction/destruction
CImageBoardView::CImageBoardView()
{
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_nTextAlign = DT_LEFT;
m_hCursorGeneralDraw = NULL;
m_hCursorFreeline = NULL;
m_hCursorEraser = NULL;
m_hCursorPicker = NULL;
m_hCursorFill = NULL;
m_hCursorCurve = NULL;
}
CImageBoardView::~CImageBoardView()
{
}
BOOL CImageBoardView::PreCreateWindow(CREATESTRUCT& cs)
{
m_hCursorGeneralDraw = AfxGetApp()->LoadCursor(IDC_CURSORGENERALDRAW);
cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS,
m_hCursorGeneralDraw,
(HBRUSH)(COLOR_WINDOW-1),
AfxGetApp()->LoadIcon(IDR_IMAGEBTYPE));
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView drawing
void CImageBoardView::OnDraw(CDC* pDC)
{
CImageBoardDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (! pDoc->m_pDib->IsEmpty())
m_pDib->Display(pDC, 0, 0);
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 CImageBoardView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CImageBoardDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
m_pDib = pDoc->m_pDib;
CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight());
SetScrollSizes(MM_TEXT, sizeTotal);
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView printing
BOOL CImageBoardView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CImageBoardView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CImageBoardView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView diagnostics
#ifdef _DEBUG
void CImageBoardView::AssertValid() const
{
CScrollView::AssertValid();
}
void CImageBoardView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CImageBoardDoc* CImageBoardView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageBoardDoc)));
return (CImageBoardDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CImageBoardView message handlers
void CImageBoardView::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 CImageBoardView::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 CImageBoardView::SetStatusBarCursorPosition(CPoint point)
{
CWindowDC dc(this);
dc.LPtoDP(&point);
int nOldUnit = dc.SetMapMode(m_nLengthUnit);
dc.DPtoLP(&point);
dc.SetMapMode(nOldUnit);
CString msg;
double fCX = abs(point.x), fCY = 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("%.1f,%.1f", fCX, fCY);
break;
}
CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
ASSERT_KINDOF(CMainFrame, pMainFrame);
pMainFrame->m_wndStatusBar.SetPaneText(PANE_CURSOR_POSITION, msg);
}
void CImageBoardView::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("%.1f,%.1f", fCX, fCY);
break;
}
CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
ASSERT_KINDOF(CMainFrame, pMainFrame);
pMainFrame->m_wndStatusBar.SetPaneText(PANE_IMAGE_SIZE, msg);
}
void CImageBoardView::OnInch()
{
SetLengthUnit(MM_HIENGLISH);
}
void CImageBoardView::OnMm()
{
SetLengthUnit(MM_HIMETRIC);
}
void CImageBoardView::OnPixel()
{
SetLengthUnit(MM_TEXT);
}
void CImageBoardView::SetLengthUnit(int nUnit)
{
m_nLengthUnit = nUnit;
SetStatusBarLengthUnit(nUnit);
CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight());
SetStatusBarImageSize(sizeTotal);
CMenu *pMenu = AfxGetApp()->m_pMainWnd->GetMenu();
switch (m_nLengthUnit)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -