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

📄 ptctrl_eraser.cpp

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