📄 ptctrl_eraser.cpp
字号:
break;
case PtCtrl_Eraser_LinkLine:
draw_type = 0;
if(pPtCtrl_Eraser->cx > pPtCtrl_Eraser->m_ptctrl_base.m_cx)
draw_type |= 0x01;
else if(pPtCtrl_Eraser->cx < pPtCtrl_Eraser->m_ptctrl_base.m_cx)
draw_type |= 0x04;
if(pPtCtrl_Eraser->cy > pPtCtrl_Eraser->m_ptctrl_base.m_cy)
draw_type |= 0x02;
else if(pPtCtrl_Eraser->cy < pPtCtrl_Eraser->m_ptctrl_base.m_cy)
draw_type |= 0x08;
switch(draw_type)
{
case 0x01:
step_count = pPtCtrl_Eraser->cx - pPtCtrl_Eraser->m_ptctrl_base.m_cx;
step_x = 1;
step_y = 0;
rt_base.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
rt_base.right = pPtCtrl_Eraser->cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
rt_base.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x02:
step_count = pPtCtrl_Eraser->cy - pPtCtrl_Eraser->m_ptctrl_base.m_cy;
step_x = 0;
step_y = 1;
rt_base.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
rt_base.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
rt_base.bottom = pPtCtrl_Eraser->cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x04:
step_count = pPtCtrl_Eraser->m_ptctrl_base.m_cx - pPtCtrl_Eraser->cx;
step_x = -1;
step_y = 0;
rt_base.left = pPtCtrl_Eraser->cx;
rt_base.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
rt_base.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x08:
step_count = pPtCtrl_Eraser->m_ptctrl_base.m_cy - pPtCtrl_Eraser->cy;
step_x = 0;
step_y = -1;
rt_base.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
rt_base.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->cy;
rt_base.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x03:
step_x = pPtCtrl_Eraser->cx - pPtCtrl_Eraser->m_ptctrl_base.m_cx;
step_y = pPtCtrl_Eraser->cy - pPtCtrl_Eraser->m_ptctrl_base.m_cy;
if(step_x > step_y)
{
step_count = step_x;
step_x = 1;
step_y = step_y/(float)step_count;
}
else
{
step_count = step_y;
step_y = 1;
step_x = step_x/(float)step_count;
}
rt_base.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
rt_base.right = pPtCtrl_Eraser->cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
rt_base.bottom = pPtCtrl_Eraser->cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x06:
step_x = pPtCtrl_Eraser->m_ptctrl_base.m_cx - pPtCtrl_Eraser->cx;
step_y = pPtCtrl_Eraser->cy - pPtCtrl_Eraser->m_ptctrl_base.m_cy;
if(step_x > step_y)
{
step_count = step_x;
step_x = -1;
step_y = step_y/(float)step_count;
}
else
{
step_count = step_y;
step_y = 1;
step_x = - step_x/(float)step_count;
}
rt_base.left = pPtCtrl_Eraser->cx;
rt_base.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
rt_base.bottom = pPtCtrl_Eraser->cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x0c:
step_x = pPtCtrl_Eraser->m_ptctrl_base.m_cx - pPtCtrl_Eraser->cx;
step_y = pPtCtrl_Eraser->m_ptctrl_base.m_cy - pPtCtrl_Eraser->cy;
if(step_x > step_y)
{
step_count = step_x;
step_x = -1;
step_y = -step_y/(float)step_count;
}
else
{
step_count = step_y;
step_y = -1;
step_x = -step_x/(float)step_count;
}
rt_base.left = pPtCtrl_Eraser->cx;
rt_base.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->cy;
rt_base.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
case 0x09:
step_x = pPtCtrl_Eraser->cx - pPtCtrl_Eraser->m_ptctrl_base.m_cx;
step_y = pPtCtrl_Eraser->m_ptctrl_base.m_cy - pPtCtrl_Eraser->cy;
if(step_x > step_y)
{
step_count = step_x;
step_x = 1;
step_y = -step_y/(float)step_count;
}
else
{
step_count = step_y;
step_y = -1;
step_x = step_x/(float)step_count;
}
rt_base.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
rt_base.right = pPtCtrl_Eraser->cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
rt_base.top = pPtCtrl_Eraser->cy;
rt_base.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
break;
default : return 1;
}
f_x1 = rt.left = pPtCtrl_Eraser->m_ptctrl_base.m_cx;
f_x2 = rt.right = pPtCtrl_Eraser->m_ptctrl_base.m_cx + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
f_y1 = rt.top = pPtCtrl_Eraser->m_ptctrl_base.m_cy;
f_y2 = rt.bottom = pPtCtrl_Eraser->m_ptctrl_base.m_cy + (PT_ERASER_WID << pPtCtrl_Eraser->m_ptctrl_base.m_ctrl_style);
for(loop = 0; loop < step_count; loop++)
{
f_x1 += step_x;
f_x2 += step_x;
f_y1 += step_y;
f_y2 += step_y;
rt.left = f_x1;
rt.right = f_x2;
rt.top = f_y1;
rt.bottom = f_y2;
FillRect(m_pt_app_info.m_pt_backup_hdc,&rt,hb);
}
cx = rt_base.left - m_pt_app_info.m_pt_bakup_pos.x;
cx = cx << m_pt_app_info.m_pt_zoom_size;
cy = rt_base.top - m_pt_app_info.m_pt_bakup_pos.y;
cy = cy << m_pt_app_info.m_pt_zoom_size;
StretchBlt(pPtCtrl_Eraser->m_ptctrl_base.m_pdc,
cx,cy,
(rt_base.right - rt_base.left)<<m_pt_app_info.m_pt_zoom_size, (rt_base.bottom - rt_base.top)<<m_pt_app_info.m_pt_zoom_size,
m_pt_app_info.m_pt_backup_hdc,
rt_base.left,rt_base.top,
(rt_base.right - rt_base.left),(rt_base.bottom - rt_base.top),
SRCCOPY);
// StretchBlt(pPtCtrl_Eraser->m_ptctrl_base.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_Eraser->m_ptctrl_base.m_cx = pPtCtrl_Eraser->cx;
pPtCtrl_Eraser->m_ptctrl_base.m_cy = pPtCtrl_Eraser->cy;
break;
default :
pPtCtrl_Eraser->m_opt_flag = PtCtrl_Eraser_Nothing;
return 1;
}
return 0;
}
INT PtCtrl_Eraser_OnDrawStyle(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
PtCtrlBase_OnDrawStyle(pPtCtrl,tx);
PtCtrl_Eraser *pPtCtrl_Eraser = (PtCtrl_Eraser*)pPtCtrl;
RECT rt;
GetWindowRect(m_pt_app_info.m_pt_style_bn_hwnd[tx],&rt);
OffsetRect(&rt,-rt.left,-rt.top);
if(tx == pPtCtrl->m_ctrl_style)
FillRect(pPtCtrl->m_pdc,&rt,(HBRUSH)GetStockObject(WHITE_BRUSH));
HBRUSH hbrush = CreateSolidBrush(0);
INT cx,cy;
cx = rt.right >> 1;
rt.left = cx - (PT_ERASER_WID<<tx)>>1;
rt.right = cx + (PT_ERASER_WID<<tx)>>1;
rt.bottom = PT_ERASER_WID<<tx;
FillRect(pPtCtrl_Eraser->m_ptctrl_base.m_pdc,&rt,hbrush);
DeleteObject(hbrush);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -