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

📄 ptctrl_plyon.cpp

📁 wince下的画图程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			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 + -