📄 ptctrl_plyon.cpp
字号:
draw_rect.left = pPtCtrl_Plyon->m_ptctrl_base.m_cx - FIX_PIXEL;
draw_rect.right = pPtCtrl_Plyon->cx + FIX_PIXEL;
}
else
{
draw_rect.right = pPtCtrl_Plyon->m_ptctrl_base.m_cx + FIX_PIXEL;
draw_rect.left = pPtCtrl_Plyon->cx - FIX_PIXEL;
}
if(pPtCtrl_Plyon->m_ptctrl_base.m_cy < pPtCtrl_Plyon->cy)
{
draw_rect.top = pPtCtrl_Plyon->m_ptctrl_base.m_cy - FIX_PIXEL;
draw_rect.bottom = pPtCtrl_Plyon->cy + FIX_PIXEL;
}
else
{
draw_rect.bottom = pPtCtrl_Plyon->m_ptctrl_base.m_cy + FIX_PIXEL;
draw_rect.top = pPtCtrl_Plyon->cy - FIX_PIXEL;
}
if(draw_rect.left < 0)
draw_rect.left = 0;
if(draw_rect.top < 0)
draw_rect.top = 0;
if(draw_rect.right >= m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth)
draw_rect.right = m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth;
if(draw_rect.bottom >= m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight)
draw_rect.bottom = m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight;
// BitBlt(m_pt_app_info.m_pt_backup_hdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->m_bak_hdc,0,0,SRCCOPY);
// BitBlt(pPtCtrl->m_pdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->m_bak_hdc,0,0,SRCCOPY);
BitBlt(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.top,
pPtCtrl_Plyon->m_bak_rect.right - pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.bottom - pPtCtrl_Plyon->m_bak_rect.top,
pPtCtrl_Plyon->m_bak_hdc,
pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.top,
SRCCOPY);
// BitBlt(pPtCtrl->m_pdc,
// pPtCtrl_Plyon->m_bak_rect.left,
// pPtCtrl_Plyon->m_bak_rect.top,
// pPtCtrl_Plyon->m_bak_rect.right - pPtCtrl_Plyon->m_bak_rect.left,
// pPtCtrl_Plyon->m_bak_rect.bottom - pPtCtrl_Plyon->m_bak_rect.top,
// pPtCtrl_Plyon->m_bak_hdc,
// pPtCtrl_Plyon->m_bak_rect.left,
// pPtCtrl_Plyon->m_bak_rect.top,
// SRCCOPY);
MoveToEx(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_ptctrl_base.m_cx,pPtCtrl_Plyon->m_ptctrl_base.m_cy,NULL);
//MoveToEx(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_ptctrl_base.m_cx,pPtCtrl_Plyon->m_ptctrl_base.m_cy,NULL);
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_pen);
//SelectObject(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_pen);
LineTo(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->cx,pPtCtrl_Plyon->cy);
//LineTo(pPtCtrl->m_pdc,pPtCtrl_Plyon->cx,pPtCtrl_Plyon->cy);
rt = draw_rect;
PT_SET_SMALL(rt.left,pPtCtrl_Plyon->m_bak_rect.left);
PT_SET_SMALL(rt.top,pPtCtrl_Plyon->m_bak_rect.top);
PT_SET_BIG(rt.right,pPtCtrl_Plyon->m_bak_rect.right);
PT_SET_BIG(rt.bottom,pPtCtrl_Plyon->m_bak_rect.bottom);
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->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_Plyon->m_bak_rect = draw_rect;
break;
case PtCtrl_Plyon_LinkFirstEnd:
if(pPtCtrl_Plyon->m_ptctrl_base.m_cx < pPtCtrl_Plyon->cx)
{
draw_rect.left = pPtCtrl_Plyon->m_ptctrl_base.m_cx - FIX_PIXEL;
draw_rect.right = pPtCtrl_Plyon->cx + FIX_PIXEL;
}
else
{
draw_rect.right = pPtCtrl_Plyon->m_ptctrl_base.m_cx + FIX_PIXEL;
draw_rect.left = pPtCtrl_Plyon->cx - FIX_PIXEL;
}
if(pPtCtrl_Plyon->m_ptctrl_base.m_cy < pPtCtrl_Plyon->cy)
{
draw_rect.top = pPtCtrl_Plyon->m_ptctrl_base.m_cy - FIX_PIXEL;
draw_rect.bottom = pPtCtrl_Plyon->cy + FIX_PIXEL;
}
else
{
draw_rect.bottom = pPtCtrl_Plyon->m_ptctrl_base.m_cy + FIX_PIXEL;
draw_rect.top = pPtCtrl_Plyon->cy - FIX_PIXEL;
}
if(draw_rect.left < 0)
draw_rect.left = 0;
if(draw_rect.top < 0)
draw_rect.top = 0;
if(draw_rect.right >= m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth)
draw_rect.right = m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth;
if(draw_rect.bottom >= m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight)
draw_rect.bottom = m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight;
BitBlt(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.top,
pPtCtrl_Plyon->m_bak_rect.right - pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.bottom - pPtCtrl_Plyon->m_bak_rect.top,
pPtCtrl_Plyon->m_bak_hdc,
pPtCtrl_Plyon->m_bak_rect.left,
pPtCtrl_Plyon->m_bak_rect.top,
SRCCOPY);
MoveToEx(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_ptctrl_base.m_cx,pPtCtrl_Plyon->m_ptctrl_base.m_cy,NULL);
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_pen);
LineTo(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->cx,pPtCtrl_Plyon->cy);
rt = draw_rect;
PT_SET_SMALL(rt.left,pPtCtrl_Plyon->m_bak_rect.left);
PT_SET_SMALL(rt.top,pPtCtrl_Plyon->m_bak_rect.top);
PT_SET_BIG(rt.right,pPtCtrl_Plyon->m_bak_rect.right);
PT_SET_BIG(rt.bottom,pPtCtrl_Plyon->m_bak_rect.bottom);
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->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_Plyon->m_bak_rect = draw_rect;
pPtCtrl_Plyon->m_ptctrl_base.m_cx = pPtCtrl_Plyon->cx;
pPtCtrl_Plyon->m_ptctrl_base.m_cy = pPtCtrl_Plyon->cy;
break;
case PtCtrl_Plyon_LinkMore:
//pPtCtrl_Plyon->m_ptctrl_base.m_cx = pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].x;
//pPtCtrl_Plyon->m_ptctrl_base.m_cy = pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].y;
if(pPtCtrl_Plyon->m_ptctrl_base.m_cx < pPtCtrl_Plyon->cx)
{
draw_rect.left = pPtCtrl_Plyon->m_ptctrl_base.m_cx - FIX_PIXEL;
draw_rect.right = pPtCtrl_Plyon->cx + FIX_PIXEL;
}
else
{
draw_rect.right = pPtCtrl_Plyon->m_ptctrl_base.m_cx + FIX_PIXEL;
draw_rect.left = pPtCtrl_Plyon->cx - FIX_PIXEL;
}
if(pPtCtrl_Plyon->m_ptctrl_base.m_cy < pPtCtrl_Plyon->cy)
{
draw_rect.top = pPtCtrl_Plyon->m_ptctrl_base.m_cy - FIX_PIXEL;
draw_rect.bottom = pPtCtrl_Plyon->cy + FIX_PIXEL;
}
else
{
draw_rect.bottom = pPtCtrl_Plyon->m_ptctrl_base.m_cy + FIX_PIXEL;
draw_rect.top = pPtCtrl_Plyon->cy - FIX_PIXEL;
}
if(draw_rect.left < 0)
draw_rect.left = 0;
if(draw_rect.top < 0)
draw_rect.top = 0;
if(draw_rect.right >= m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth)
draw_rect.right = m_pt_app_info.m_bmp_file_info.bmiHeader.biWidth;
if(draw_rect.bottom >= m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight)
draw_rect.bottom = m_pt_app_info.m_bmp_file_info.bmiHeader.biHeight;
MoveToEx(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 2].x,
pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 2].y,
NULL);
// MoveToEx(pPtCtrl->m_pdc,
// pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 2].x,
// pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 2].y,
// NULL);
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_pen);
//SelectObject(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_pen);
LineTo(m_pt_app_info.m_pt_backup_hdc,
pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].x,
pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].y);
// LineTo(pPtCtrl->m_pdc,
// pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].x,
// pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count - 1].y);
rt = draw_rect;
PT_SET_SMALL(rt.left,pPtCtrl_Plyon->m_bak_rect.left);
PT_SET_SMALL(rt.top,pPtCtrl_Plyon->m_bak_rect.top);
PT_SET_BIG(rt.right,pPtCtrl_Plyon->m_bak_rect.right);
PT_SET_BIG(rt.bottom,pPtCtrl_Plyon->m_bak_rect.bottom);
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->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_Plyon->m_ptctrl_base.m_cx = pPtCtrl_Plyon->cx;
pPtCtrl_Plyon->m_ptctrl_base.m_cy = pPtCtrl_Plyon->cy;
break;
case PtCtrl_Plyon_End:
if(pPtCtrl_Plyon->m_ptctrl_base.m_last_draw_flag && pPtCtrl_Plyon->m_point_count > 1)
{
TRACE(L"PtCtrl_Plyon_End\n");
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_Plyon->m_bak_hdc,0,0,SRCCOPY);
//BitBlt(m_pt_app_info.m_pt_backup_hdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->m_bak_hdc,0,0,SRCCOPY);
//BitBlt(pPtCtrl->m_pdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->m_bak_hdc,0,0,SRCCOPY);
if(pPtCtrl_Plyon->m_ptctrl_base.m_ctrl_style != 1)
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_pen);
else
SelectObject(m_pt_app_info.m_pt_backup_hdc,(HPEN)GetStockObject(NULL_PEN));
//SelectObject(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_pen);
SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_brush);
//SelectObject(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_brush);
//SetPolyFillMode(m_pt_app_info.m_pt_backup_hdc,WINDING);
//SetPolyFillMode(pPtCtrl->m_pdc,WINDING);
TRACE(L"Polyline %d\n" , pPtCtrl_Plyon->m_point_count);
// pPtCtrl_Plyon->m_point[pPtCtrl_Plyon->m_point_count] = pPtCtrl_Plyon->m_point[0];
// pPtCtrl_Plyon->m_point_count ++;
INT ret = Polygon(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Plyon->m_point,pPtCtrl_Plyon->m_point_count);
//ret = Polygon(pPtCtrl->m_pdc,pPtCtrl_Plyon->m_point,pPtCtrl_Plyon->m_point_count);
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_Plyon->m_ptctrl_base.m_last_draw_flag = FALSE;
}
pPtCtrl_Plyon->m_ptctrl_base.m_cx = pPtCtrl_Plyon->cx;
pPtCtrl_Plyon->m_ptctrl_base.m_cy = pPtCtrl_Plyon->cy;
pPtCtrl_Plyon->m_opt_flag = PtCtrl_Plyon_Nothing;
break;
case PtCtrl_Plyon_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_Plyon->m_bak_hdc,0,0,SRCCOPY);
//BitBlt(m_pt_app_info.m_pt_backup_hdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->m_bak_hdc,0,0,SRCCOPY);
//BitBlt(pPtCtrl->m_pdc,0,0,PT_PIC_SIZE_X,PT_PIC_SIZE_Y,pPtCtrl_Plyon->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_Plyon->m_ptctrl_base.m_cx = pPtCtrl_Plyon->cx;
pPtCtrl_Plyon->m_ptctrl_base.m_cy = pPtCtrl_Plyon->cy;
pPtCtrl_Plyon->m_opt_flag = PtCtrl_Plyon_Nothing;
default :
pPtCtrl_Plyon->m_opt_flag = PtCtrl_Plyon_Nothing;
return 1;
}
return 0;
}
INT PtCtrl_Plyon_OnDrawStyle(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
PtCtrl_Plyon *pPtCtrl_Brush = (PtCtrl_Plyon*)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));
switch(tx)
{
case 0:
SelectObject(pPtCtrl->m_pdc,(HBRUSH)GetStockObject(NULL_BRUSH));
SelectObject(pPtCtrl->m_pdc,GetStockObject(BLACK_PEN));
break;
case 1:
SelectObject(pPtCtrl->m_pdc,(HBRUSH)GetStockObject(GRAY_BRUSH));
SelectObject(pPtCtrl->m_pdc,(HPEN)GetStockObject(NULL_PEN));
break;
case 2:
SelectObject(pPtCtrl->m_pdc,(HBRUSH)GetStockObject(GRAY_BRUSH));
SelectObject(pPtCtrl->m_pdc,(HPEN)GetStockObject(BLACK_PEN));
break;
}
Rectangle(pPtCtrl->m_pdc, 2,2, rt.right - 2 ,rt.bottom - 2);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -