画图问题

来源:互联网 发布:淘宝卖茶叶图片大全 编辑:程序博客网 时间:2024/05/19 13:28

// 关键代码如下

int iLength = abs( ( int ) ( GetTowPointLength( m_ptBeginPos.x, m_ptBeginPos.y, ptPos.x, ptPos.y ) + 0.5f ) );
double x0 = abs( ptPos.y - m_ptBeginPos.y ), y0 = abs( ptPos.x - m_ptBeginPos.x );
double  fRadian;

if ( m_ptBeginPos.x < ptPos.x && m_ptBeginPos.y < ptPos.y )
{
    // 2
    fRadian = 1.5707963267948966192313216916398f + atan( x0 / y0 );
}
else if ( m_ptBeginPos.x > ptPos.x && m_ptBeginPos.y < ptPos.y )
{
    // 3
    fRadian = 4.7123889803846898576939650749193f - atan( x0 / y0 );
}
else if ( m_ptBeginPos.x <ptPos.x && m_ptBeginPos.y> ptPos.y )
{
    // 1
    fRadian = 1.5707963267948966192313216916398f - atan( x0 / y0 );
}
else
{
    fRadian = 4.7123889803846898576939650749193f + atan( x0 / y0 );
}

POINT pt[3];          
x0 = 0;
y0 = iLength;
pt[0].x = ( int ) ( x0 *cos( fRadian ) + y0 *sin( fRadian ) ) + m_ptBeginPos.x;
pt[0].y = abs( ( int ) ( -x0 *sin( fRadian ) + y0 *cos( fRadian ) - m_ptBeginPos.y ) );        

x0 = -50;          
y0 = 0;
pt[1].x = ( int ) ( x0 *cos( fRadian ) + y0 *sin( fRadian ) ) + m_ptBeginPos.x;
pt[1].y = abs( ( int ) ( -x0 *sin( fRadian ) + y0 *cos( fRadian ) - m_ptBeginPos.y ) );        

x0 = 50;          
y0 = 0;
pt[2].x = ( int ) ( x0 *cos( fRadian ) + y0 *sin( fRadian ) ) + m_ptBeginPos.x;
pt[2].y = abs( ( int ) ( -x0 *sin( fRadian ) + y0 *cos( fRadian ) - m_ptBeginPos.y ) );

SelectObject( hdc, GetStockObject( NULL_PEN ) );
SelectObject( hdc, GetStockObject( BLACK_BRUSH ) );
Polygon( hdc, pt, 3 );

SelectObject( hdc, GetStockObject( NULL_PEN ) );
SelectObject( hdc, GetStockObject( BLACK_BRUSH ) );
Rectangle( hdc, m_ptBeginPos.x - 200, m_ptBeginPos.y - 100, m_ptBeginPos.x + 200, m_ptBeginPos.y + 100 );

原创粉丝点击