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

📄 ptctrl_plyrgn.cpp

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