void RC_Widget::paintEvent(QPaintEvent*)
{
    QPen pen_red(Qt::red);
    pen_red.setWidth(5);
    QPainter painter(this);
    painter.setPen(pen_red);

    painter.drawLine(0, 250, 500, 250);
    painter.drawLine(250, 0, 250, 500);

    QPen pen_blue(Qt::blue);
    pen_blue.setWidth(3);
    painter.setPen(pen_blue);

    if(p_actual.x()<0)
        p_actual.setX(0);
    if(p_actual.y()<0)
        p_actual.setY(0);

    if(p_actual.x()>500)
        p_actual.setX(500);
    if(p_actual.y()>500)
        p_actual.setY(500);

    painter.drawLine(0, p_actual.y(), 500, p_actual.y());
    painter.drawLine(p_actual.x(), 0, p_actual.x(), 500);

    int y_value = p_actual.y();
    int x_value = p_actual.x();

    if(rev_up_down<0){
        if(y_value>250)
            y_value = 250 - (y_value - 250);
        else
            y_value = 250 + (250 - y_value);
    }

    if(rev_left_right<0){
        if(x_value>250)
            x_value = 250 - (x_value - 250);
        else
            x_value = 250 + (250 - x_value);
    }

    double up_down =    (250 - y_value)*500/250 + ((min_value_up_down    + max_value_up_down)/2);
    double left_right = (250 - x_value)*500/250 + ((min_value_left_right + max_value_left_right)/2);

    ejeX = up_down;
    ejeY = left_right;

//    std::cout << "Repaint: "<< arriba_abajo << " " << izquierda_derecha << " " << p_actual.x() << " " << p_actual.y() << std::endl;
}
Example #2
0
void __stdcall CDlgIPCFeature:: draw_fun(PLAY_HANDLE handle, HDC hDc, LONG nUser)
{	
	CDC* dc = CDC::FromHandle(hDc);
	CDlgIPCFeature* test= (CDlgIPCFeature*)nUser;
	if(!test->m_auto_focus_rect_enable)
	{
		return;
	}

	RECT rt;
	test->GetDlgItem(IDC_VIDEO_IPC)->GetClientRect(&rt);
	int pic_w = rt.right;
	int pic_h = rt.bottom;
	int w =pic_w / 8;
	int h = pic_h / 5;

	int i = 0,j = 0;
	CPen pen_red(0,1,RGB(250,0,0));
	CPen *oldPen = dc->SelectObject(&pen_red);
	for(i = 1; i <5; i++)
	{
		dc->MoveTo(0,h * i);
		dc->LineTo(rt.right,h * i);
	}
	
	//draw v line
	for(i = 1; i < 8; i++)
	{
		dc->MoveTo(w * i,0);
		dc->LineTo(w * i,rt.bottom);
	}
	dc->SelectObject(oldPen);	


// 	CDC ImageDC,MaskDC;
// 	ImageDC.CreateCompatibleDC(dc);	
// 	ImageDC.SelectObject(&test->m_mask_bmp);
// 	MaskDC.CreateCompatibleDC(dc);		
// 	MaskDC.BitBlt(0,0,rt.right,rt.bottom,&ImageDC,0,0,SRCCOPY);	
// 
// 	ImageDC.BitBlt(0,0,rt.right,rt.bottom,&MaskDC,0,0,SRCAND);	
// 	
// 	dc->StretchBlt(test->m_auto_focus_rt.left,
// 		test->m_auto_focus_rt.top,
// 		test->m_auto_focus_rt.right - test->m_auto_focus_rt.left,
// 		test->m_auto_focus_rt.bottom - test->m_auto_focus_rt.top,
// 		&MaskDC,0,0,10,10,SRCAND);
// 	
// 	dc->StretchBlt(test->m_auto_focus_rt.left,
// 		test->m_auto_focus_rt.top,
// 		test->m_auto_focus_rt.right - test->m_auto_focus_rt.left,
// 		test->m_auto_focus_rt.bottom - test->m_auto_focus_rt.top,
// 		&ImageDC,0,0,10,10,SRCPAINT);
// 	
// 	ImageDC.DeleteDC();
// 	MaskDC.DeleteDC();
		
	
	// draw user rect
	CPen pen_blue(0,1,RGB(0,0,255));
	 dc->SelectObject(&pen_blue);
	
	dc->SelectStockObject(NULL_BRUSH);
	dc->Rectangle(&test->m_auto_focus_rt);
}