📄 ptctrl_plyrgn.cpp
字号:
TRACE(L"PtCtrl_RectRgn_OnMouseMove 5\n");
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_End;
}
m_pt_app_info.m_pt_board_flag |= PT_BOARD_FLAG_PTCTRL;
InvalidateRect(m_pt_app_info.m_pt_board_hwnd, &m_pt_app_info.m_pt_board_rect,FALSE);
break;
default:
TRACE(L"PtCtrl_PlyRgn_OnMouseMove 3\n");
}
return 0;
}
INT PtCtrl_PlyRgn_OnMouseRelease(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
PtCtrlBase_OnMouseRelease(pPtCtrl);
PtCtrl_PlyRgn *pPtCtrl_PlyRgn = (PtCtrl_PlyRgn*)pPtCtrl;
switch(pPtCtrl_PlyRgn->m_opt_flag)
{
case PtCtrl_PlyRgn_SetPixel:
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_Nothing;
break;
case PtCtrl_PlyRgn_LinkPixel:
pPtCtrl_PlyRgn->m_bak_rect.left = pPtCtrl_PlyRgn->m_bak_rect.top = 0x0fffffff;
pPtCtrl_PlyRgn->m_bak_rect.right = pPtCtrl_PlyRgn->m_bak_rect.bottom = 0;
for(INT loop = 0 ; loop < pPtCtrl_PlyRgn->m_point_count; loop ++)
{
pPtCtrl_PlyRgn->m_bak_rect.left = pPtCtrl_PlyRgn->m_bak_rect.left > pPtCtrl_PlyRgn->m_point[loop].x ? pPtCtrl_PlyRgn->m_point[loop].x : pPtCtrl_PlyRgn->m_bak_rect.left;
pPtCtrl_PlyRgn->m_bak_rect.right = pPtCtrl_PlyRgn->m_bak_rect.right < pPtCtrl_PlyRgn->m_point[loop].x ? pPtCtrl_PlyRgn->m_point[loop].x : pPtCtrl_PlyRgn->m_bak_rect.right;
pPtCtrl_PlyRgn->m_bak_rect.top = pPtCtrl_PlyRgn->m_bak_rect.top > pPtCtrl_PlyRgn->m_point[loop].y ? pPtCtrl_PlyRgn->m_point[loop].y : pPtCtrl_PlyRgn->m_bak_rect.top;
pPtCtrl_PlyRgn->m_bak_rect.bottom = pPtCtrl_PlyRgn->m_bak_rect.bottom < pPtCtrl_PlyRgn->m_point[loop].y ? pPtCtrl_PlyRgn->m_point[loop].y : pPtCtrl_PlyRgn->m_bak_rect.bottom;
TRACE(L"Rect %d,%d,%d,%d\n",pPtCtrl_PlyRgn->m_bak_rect.left,pPtCtrl_PlyRgn->m_bak_rect.right,pPtCtrl_PlyRgn->m_bak_rect.top,pPtCtrl_PlyRgn->m_bak_rect.bottom);
}
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_LinkPixelEnd;
m_pt_app_info.m_pt_board_flag |= PT_BOARD_FLAG_PTCTRL;
InvalidateRect(m_pt_app_info.m_pt_board_hwnd, &m_pt_app_info.m_pt_board_rect,FALSE);
break;
}
return 0;
}
INT PtCtrl_PlyRgn_OnDrawBoard(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
PtCtrl_PlyRgn *pPtCtrl_PlyRgn = (PtCtrl_PlyRgn*)pPtCtrl;
RECT draw_rect;
RECT rt;
INT cx,cy;
#define FIX_PIXEL 3
if(!pPtCtrl_PlyRgn->m_init_draw_flag)
{
pPtCtrl_PlyRgn->m_bak_hdc = CreateCompatibleDC(m_pt_app_info.m_pt_backup_hdc);
pPtCtrl_PlyRgn->m_bak_hbmp = CreateCompatibleBitmap(m_pt_app_info.m_pt_backup_hdc,m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight);
SelectObject(pPtCtrl_PlyRgn->m_bak_hdc,pPtCtrl_PlyRgn->m_bak_hbmp);
pPtCtrl_PlyRgn->m_init_draw_flag = TRUE;
}
static int i;
static int j;
INT ret;
switch(pPtCtrl_PlyRgn->m_opt_flag)
{
case PtCtrl_PlyRgn_SetPixel:
TRACE(L"PtCtrl_PlyRgn_SetPixel\n");
BitBlt(pPtCtrl_PlyRgn->m_bak_hdc,0,0,m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight,m_pt_app_info.m_pt_backup_hdc,0,0,SRCCOPY);
if(!pPtCtrl_PlyRgn->m_bak_rgn)
DeleteObject(pPtCtrl_PlyRgn->m_bak_rgn);
if(!pPtCtrl_PlyRgn->m_rgn_hdc)
DeleteDC(pPtCtrl_PlyRgn->m_rgn_hdc);
if(!pPtCtrl_PlyRgn->m_rgn_hbmp)
DeleteObject(pPtCtrl_PlyRgn->m_rgn_hbmp);
memset(&pPtCtrl_PlyRgn->m_bak_rect,0,sizeof(pPtCtrl_PlyRgn->m_bak_rect));
break;
case PtCtrl_PlyRgn_LinkPixel:
TRACE(L"PtCtrl_PlyRgn_LinkFirst %d\n",i++);
MoveToEx(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_PlyRgn->m_ptctrl_base.m_cx,pPtCtrl_PlyRgn->m_ptctrl_base.m_cy,NULL);
//MoveToEx(pPtCtrl->m_pdc,pPtCtrl_PlyRgn->m_ptctrl_base.m_cx,pPtCtrl_PlyRgn->m_ptctrl_base.m_cy,NULL);
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_PlyRgn->m_pen);
//SelectObject(pPtCtrl->m_pdc,pPtCtrl_PlyRgn->m_pen);
LineTo(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_PlyRgn->cx,pPtCtrl_PlyRgn->cy);
//LineTo(pPtCtrl->m_pdc,pPtCtrl_PlyRgn->cx,pPtCtrl_PlyRgn->cy);
//pPtCtrl_PlyRgn->m_bak_rect = draw_rect;
PtCreateRect(
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx, pPtCtrl_PlyRgn->m_ptctrl_base.m_cy,
pPtCtrl_PlyRgn->cx, pPtCtrl_PlyRgn->cy,
m_pt_app_info.m_pt_bakup_pos.x + (m_pt_app_info.m_pt_draw_rect.right>>m_pt_app_info.m_pt_zoom_size),
m_pt_app_info.m_pt_bakup_pos.y + (m_pt_app_info.m_pt_draw_rect.bottom>>m_pt_app_info.m_pt_zoom_size),
&rt);
cx = rt.left - m_pt_app_info.m_pt_bakup_pos.x;
cx = cx << m_pt_app_info.m_pt_zoom_size;
cy = rt.top - m_pt_app_info.m_pt_bakup_pos.y;
cy = cy << m_pt_app_info.m_pt_zoom_size;
StretchBlt(pPtCtrl_PlyRgn->m_ptctrl_base.m_pdc,
cx,cy,
(rt.right - rt.left)<<m_pt_app_info.m_pt_zoom_size,(rt.bottom - rt.top)<<m_pt_app_info.m_pt_zoom_size,
m_pt_app_info.m_pt_backup_hdc,
rt.left,rt.top,
(rt.right - rt.left),(rt.bottom - rt.top),
SRCCOPY);
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx = pPtCtrl_PlyRgn->cx;
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy = pPtCtrl_PlyRgn->cy;
break;
case PtCtrl_PlyRgn_LinkPixelEnd:
pPtCtrl_PlyRgn->m_bak_rgn = CreatePolygonRgn(pPtCtrl_PlyRgn->m_point,pPtCtrl_PlyRgn->m_point_count,WINDING);
pPtCtrl_PlyRgn->m_rgn_hdc = CreateCompatibleDC(m_pt_app_info.m_pt_backup_hdc);
pPtCtrl_PlyRgn->m_rgn_hbmp = CreateCompatibleBitmap(m_pt_app_info.m_pt_backup_hdc,m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight);
SelectObject(pPtCtrl_PlyRgn->m_rgn_hdc,pPtCtrl_PlyRgn->m_rgn_hbmp);
break;
case PtCtrl_PlyRgn_MoveRgn:
TRACE(L"PtCtrl_PlyRgn_MoveRgn %d\n",j++);
BitBlt(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx - pPtCtrl_PlyRgn->m_fix_x,
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy - pPtCtrl_PlyRgn->m_fix_y,
pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
pPtCtrl_PlyRgn->m_bak_hdc,
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx - pPtCtrl_PlyRgn->m_fix_x,
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy - pPtCtrl_PlyRgn->m_fix_y,
SRCCOPY);
ret = SelectClipRgn(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_PlyRgn->m_bak_rgn);
FillRect(m_pt_app_info.m_pt_backup_hdc,&pPtCtrl_PlyRgn->m_bak_rect,pPtCtrl_PlyRgn->m_brush);
SelectClipRgn(m_pt_app_info.m_pt_backup_hdc,NULL);
// BitBlt(pPtCtrl->m_pdc,
// pPtCtrl_PlyRgn->m_ptctrl_base.m_cx - pPtCtrl_PlyRgn->m_fix_x,
// pPtCtrl_PlyRgn->m_ptctrl_base.m_cy - pPtCtrl_PlyRgn->m_fix_y,
//
// pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
// pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
// pPtCtrl_PlyRgn->m_bak_hdc,
// pPtCtrl_PlyRgn->m_ptctrl_base.m_cx - pPtCtrl_PlyRgn->m_fix_x,
// pPtCtrl_PlyRgn->m_ptctrl_base.m_cy - pPtCtrl_PlyRgn->m_fix_y,
// SRCCOPY);
//////////////////////////////////////////////////////////////////////////
BitBlt(pPtCtrl_PlyRgn->m_rgn_hdc,
pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.top,
pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
//pPtCtrl_PlyRgn->m_bak_hdc,
m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_PlyRgn->cx - pPtCtrl_PlyRgn->m_fix_x,
pPtCtrl_PlyRgn->cy - pPtCtrl_PlyRgn->m_fix_y,
SRCCOPY);
ret = SelectClipRgn(pPtCtrl_PlyRgn->m_rgn_hdc,pPtCtrl_PlyRgn->m_bak_rgn);
BitBlt(pPtCtrl_PlyRgn->m_rgn_hdc,
pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.top,
pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
pPtCtrl_PlyRgn->m_bak_hdc,
pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.top,
SRCCOPY);
SelectClipRgn(pPtCtrl_PlyRgn->m_rgn_hdc,NULL);
//////////////////////////////////////////////////////////////////////////
BitBlt(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_PlyRgn->cx - pPtCtrl_PlyRgn->m_fix_x,
pPtCtrl_PlyRgn->cy - pPtCtrl_PlyRgn->m_fix_y,
pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
pPtCtrl_PlyRgn->m_rgn_hdc,
pPtCtrl_PlyRgn->m_bak_rect.left,
pPtCtrl_PlyRgn->m_bak_rect.top,
SRCCOPY);
//
// //
// BitBlt(pPtCtrl->m_pdc,
// pPtCtrl_PlyRgn->cx - pPtCtrl_PlyRgn->m_fix_x,
// pPtCtrl_PlyRgn->cy - pPtCtrl_PlyRgn->m_fix_y,
// pPtCtrl_PlyRgn->m_bak_rect.right - pPtCtrl_PlyRgn->m_bak_rect.left,
// pPtCtrl_PlyRgn->m_bak_rect.bottom - pPtCtrl_PlyRgn->m_bak_rect.top,
// pPtCtrl_PlyRgn->m_rgn_hdc,
// pPtCtrl_PlyRgn->m_bak_rect.left,
// pPtCtrl_PlyRgn->m_bak_rect.top,
// SRCCOPY);
StretchBlt(pPtCtrl->m_pdc,
0,0,
m_pt_app_info.m_pt_draw_rect.right,m_pt_app_info.m_pt_draw_rect.bottom,
m_pt_app_info.m_pt_backup_hdc,
m_pt_app_info.m_pt_bakup_pos.x,m_pt_app_info.m_pt_bakup_pos.y,
m_pt_app_info.m_pt_draw_rect.right>>m_pt_app_info.m_pt_zoom_size,m_pt_app_info.m_pt_draw_rect.bottom>>m_pt_app_info.m_pt_zoom_size,
SRCCOPY);
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx = pPtCtrl_PlyRgn->cx;
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy = pPtCtrl_PlyRgn->cy;
break;
case PtCtrl_PlyRgn_MoveRgnEnd:
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx = pPtCtrl_PlyRgn->cx;
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy = pPtCtrl_PlyRgn->cy;
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_Nothing;
break;
case PtCtrl_PlyRgn_End:
if(pPtCtrl_PlyRgn->m_ptctrl_base.m_last_draw_flag)
{
pPtCtrl_PlyRgn->m_ptctrl_base.m_last_draw_flag = FALSE;
BitBlt(m_pt_app_info.m_pt_backup_hdc,0,0,m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight,pPtCtrl_PlyRgn->m_bak_hdc,0,0,SRCCOPY);
StretchBlt(pPtCtrl->m_pdc,
0,0,
m_pt_app_info.m_pt_draw_rect.right,m_pt_app_info.m_pt_draw_rect.bottom,
m_pt_app_info.m_pt_backup_hdc,
m_pt_app_info.m_pt_bakup_pos.x,m_pt_app_info.m_pt_bakup_pos.y,
m_pt_app_info.m_pt_draw_rect.right>>m_pt_app_info.m_pt_zoom_size,m_pt_app_info.m_pt_draw_rect.bottom>>m_pt_app_info.m_pt_zoom_size,
SRCCOPY);
}
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx = pPtCtrl_PlyRgn->cx;
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy = pPtCtrl_PlyRgn->cy;
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_Nothing;
break;
case PtCtrl_PlyRgn_Cancel:
BitBlt(m_pt_app_info.m_pt_backup_hdc,0,0,m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth,m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight,pPtCtrl_PlyRgn->m_bak_hdc,0,0,SRCCOPY);
//BitBlt(pPtCtrl->m_pdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_PlyRgn->m_bak_hdc,0,0,SRCCOPY);
StretchBlt(pPtCtrl->m_pdc,
0,0,
m_pt_app_info.m_pt_draw_rect.right,m_pt_app_info.m_pt_draw_rect.bottom,
m_pt_app_info.m_pt_backup_hdc,
m_pt_app_info.m_pt_bakup_pos.x,m_pt_app_info.m_pt_bakup_pos.y,
m_pt_app_info.m_pt_draw_rect.right>>m_pt_app_info.m_pt_zoom_size,m_pt_app_info.m_pt_draw_rect.bottom>>m_pt_app_info.m_pt_zoom_size,
SRCCOPY);
pPtCtrl_PlyRgn->m_ptctrl_base.m_cx = pPtCtrl_PlyRgn->cx;
pPtCtrl_PlyRgn->m_ptctrl_base.m_cy = pPtCtrl_PlyRgn->cy;
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_Nothing;
default :
pPtCtrl_PlyRgn->m_opt_flag = PtCtrl_PlyRgn_Nothing;
return 1;
}
return 0;
}
INT PtCtrl_PlyRgn_OnDrawStyle(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
PtCtrl_PlyRgn *pPtCtrl_Brush = (PtCtrl_PlyRgn*)pPtCtrl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -