24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2675  |  回复: 20

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

引用回帖:
4楼: Originally posted by 遥望下一站 at 2012-07-19 19:30:25
谢谢您的回复。我现在是在用C++,不知道二者相比有什么区别呢?哪个更方便些。我现在用的这本书是用C++来介绍计算机图形学的...

opengl是开源图形库,有c++,c,java,python等绑定
你用什么语言调用这个库都可以
介绍资料以c/c++多见.搜索一下opengl红宝书或者蓝宝书
或者nehe的opengl教程,看第一个例子,你就会做这个问题了

» 本帖已获得的红花(最新10朵)

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
11楼2012-07-20 17:24:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zkshiwo1

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
C++本身没有画图的命令,需要使用一些图形库,比如一楼讲的OpenGL库,或者使用VC++中的画图的类库。都是要首先获得图形句柄,然后绘图

» 本帖已获得的红花(最新10朵)

12楼2012-07-20 23:21:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zkshiwo1

银虫 (小有名气)

OpenGL的话去看看Nehe Opengel教程,很快能上手。

» 本帖已获得的红花(最新10朵)

13楼2012-07-20 23:22:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinfengtang

新虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
你用MFC新建一个单文档的应用程序,在CView类的OnDraw()函数中,利用pDC直接画。
只要一句话就行了:
pDC->Rectangle(CPoint,CPoint,int,int);
两个起始点,一个长和宽。需要源程序,留下邮箱,我发给你

» 本帖已获得的红花(最新10朵)

古来圣贤皆寂寞,惟有饮者留其名!
14楼2012-07-21 10:52:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

遥望下一站

银虫 (正式写手)

送鲜花一朵
引用回帖:
14楼: Originally posted by jinfengtang at 2012-07-21 10:52:48
你用MFC新建一个单文档的应用程序,在CView类的OnDraw()函数中,利用pDC直接画。
只要一句话就行了:
pDC->Rectangle(CPoint,CPoint,int,int);
两个起始点,一个长和宽。需要源程序,留下邮箱,我发给你

那本书上也有例子,但是太大了,而且是一个交互的程序,我不知道里面哪儿是画图的。我的邮箱:azyt597@126.com,谢谢您的帮助。
好想活得洒脱一些
15楼2012-07-21 14:01:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

遥望下一站

银虫 (正式写手)

送鲜花一朵
引用回帖:
13楼: Originally posted by zkshiwo1 at 2012-07-20 23:22:53
OpenGL的话去看看Nehe Opengel教程,很快能上手。

谢谢指点。
好想活得洒脱一些
16楼2012-07-21 14:06:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

遥望下一站

银虫 (正式写手)

送鲜花一朵
引用回帖:
12楼: Originally posted by zkshiwo1 at 2012-07-20 23:21:41
C++本身没有画图的命令,需要使用一些图形库,比如一楼讲的OpenGL库,或者使用VC++中的画图的类库。都是要首先获得图形句柄,然后绘图

谢谢
好想活得洒脱一些
17楼2012-07-21 14:06:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

遥望下一站

银虫 (正式写手)

送鲜花一朵
引用回帖:
11楼: Originally posted by libralibra at 2012-07-20 17:24:01
opengl是开源图形库,有c++,c,java,python等绑定
你用什么语言调用这个库都可以
介绍资料以c/c++多见.搜索一下opengl红宝书或者蓝宝书
或者nehe的opengl教程,看第一个例子,你就会做这个问题了...

非常感谢
好想活得洒脱一些
18楼2012-07-21 14:07:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wpacer

铁虫 (正式写手)

【答案】应助回帖

★ ★ ★
遥望下一站: 金币+3, ★★★很有帮助 2012-07-24 09:02:17
不用OpenGL,直接调用MFC画图
//画配送车辆路线图
void CvrpView:rawCordTrend()
{
        CWnd* pWnd;
        POINT ps[2];
        CString strFlag,str;
        CRect rect,rectempty;
        CDC* pDC;
        CPen pen,*pOldPen,pen2,penEmpty;
       
        CBrush brush,*pOldBrush;
        POINT ptOrig;
        COLORREF crRef;
        int i,iXNum,iYNum,iXStep,iYStep;
        long iXCenter,iYCenter,X,Y;

        double dAltiMax,dAltiMin,dLongMax,dLongMin,dLatiMax,dLatiMin;

       
        pWnd = (CStatic*)GetDlgItem( IDC_STATIC_TREND );
        pWnd->Invalidate( );

        pWnd->GetWindowRect(& rect );
        pWnd->ScreenToClient(&rect);
       
        pWnd->GetWindowRect(&rectempty );
        pWnd->ScreenToClient(&rectempty);
       
        rect.left += 18;//18
        rect.top += 18; //15
        rect.right -= 18;//10
        rect.bottom -= 18; //10

       
        ptOrig.x = rect.left;
        ptOrig.y = ( rect.bottom + rect.top ) / 2 ;

        iXCenter = rect.left;
        iYCenter = ( rect.bottom + rect.top ) / 2 ;

       
        pDC = pWnd->GetDC();
        //背景透明
        pDC->SetBkMode( TRANSPARENT );
       

        //通用笔,灰白色
        pen2.CreatePen(PS_SOLID,1,RGB(128,128,128) );
        pen.CreatePen(PS_SOLID,1,RGB(0,126,0) );
       
        //画空载返回的笔
        penEmpty.CreatePen(PS_DOT,1,RGB(255,0,0) );

       
        pOldPen = pDC->SelectObject(&pen2);

        //刷子
        brush.CreateSolidBrush( RGB( 255,255,255) );
        pOldBrush = pDC->SelectObject( &brush);
        pDC->FillRect( &rect,&brush );

        pDC->SelectObject(&pen2);
        iXNum = 20;//25,15.95,19.14
        iYNum = 17.22;//25,14.35
        //iXStep = ( rect.right - rect.left ) / ( 2 * iXNum );
        iXStep = ( rect.right - rect.left ) / iXNum;
        iYStep = ( rect.bottom - rect.top ) / ( 2 * iYNum );

        //画所有点
        m_clientrelcord[0][0]=iXCenter;
        m_clientrelcord[0][1]=iYCenter;
        for(i=0;i         {
                X=m_clientcord[0]*iXStep;
                Y=-m_clientcord[1]*iYStep;
                X+=iXCenter;
                Y+=iYCenter;
                pDC->MoveTo(X,Y);
                if(i==0)
                {
                        m_strTest="O";
                        pDC->TextOut(X-12,Y-8,m_strTest);
                }
                else
                {
                        m_strTest.Format("%d",i);
                        pDC->TextOut(X,Y,m_strTest);
                }
                pDC->MoveTo(X,Y);
                m_clientrelcord[0]=X;
                m_clientrelcord[1]=Y;
               
                pDC->Ellipse(X-3,Y-3,X+3,Y+3);
        }

        //画路线图
        float fload,fcurrcost =0;
        int j=0;
        int iSubIndex=0;
        BOOL bCenter = TRUE;

        fload=0;
        chromo chro=m_chromo[0];
        chro.fCost = 0;
       
        //染色体(路线图)格式:0 123 0 456 0 789 0 1011 0 1213 0
        for(iSubIndex = 0; iSubIndex <= chro.iSubCount; iSubIndex++)
        {
                while(true)
                {
                        if(chro.nRoute[j] == 0)//从配送中心出来或返回
                        {
                                if (bCenter)//从配送中心出来
                                {
                                        bCenter = FALSE;
                                       
                                }
                                else //返回配送中心010   010230
                                {
                                        //当前子路径空车返回
                                        pDC->SelectObject(&penEmpty);
                                        X=m_clientrelcord[chro.nRoute[j-1]][0];
                                        Y=m_clientrelcord[chro.nRoute[j-1]][1];
                                        if(chro.nRoute[j-2]==0)//只有一个节点
                                        {
                                                ps[0].x=X;
                                                ps[0].y=Y;
                                                ps[1].x=iXCenter;
                                                ps[1].y=iYCenter;
                                                pDC->MoveTo(X+3 , Y-1);
                                                pDC->LineTo(iXCenter  , iYCenter);
                                        }
                                        else
                                                pDC->LineTo(iXCenter  , iYCenter);
                                        j++;
                                        break;
                               
                                }
                        }
                        else //中间客户
                        {
                                if(chro.nRoute[j-1] == 0) //从中心出来的第一个节点
                                {
                                        pDC->SelectObject(&pen2);
                                        pDC->MoveTo( iXCenter  , iYCenter  );
                                        pDC->LineTo(m_clientrelcord[chro.nRoute[j]][0],m_clientrelcord[chro.nRoute[j]][1]);
                                       
                                }
                                else //非第一个节点
                                {
                                        fload -= m_clientreq[chro.nRoute[j-1]];
                                        fcurrcost += fload*m_distance[chro.nRoute[j-1]][chro.nRoute[j]];

                                        pDC->SelectObject(&pen2);
                                        X=m_clientrelcord[chro.nRoute[j-1]][0];
                                        Y=m_clientrelcord[chro.nRoute[j-1]][1];
                                        pDC->MoveTo( X  , Y  );
                                        pDC->LineTo(m_clientrelcord[chro.nRoute[j]][0],m_clientrelcord[chro.nRoute[j]][1]);
                                }
                       
                        }

                        j++;
                }//end of: while(true)

        }//end of:for(iSubIndex = 0; iSubIndex <= m_chromo[iIndex].iSubCount; iSubIndex++)


        //end of:画路线图
       
        //恢复系统原来的画笔
        pDC->SelectObject( pOldPen );
        pDC->SelectObject( pOldBrush );
        ReleaseDC( pDC );
        pDC = NULL;
}
朗月茶馆董事馆长
19楼2012-07-23 11:16:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zkshiwo1

银虫 (小有名气)

引用回帖:
15楼: Originally posted by 遥望下一站 at 2012-07-21 14:01:40
那本书上也有例子,但是太大了,而且是一个交互的程序,我不知道里面哪儿是画图的。我的邮箱:azyt597@126.com,谢谢您的帮助。...

孙鑫的VC++学习上面有例子,讲的也非常详细。

» 本帖已获得的红花(最新10朵)

20楼2012-07-23 17:07:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 遥望下一站 的主题更新
信息提示
请填处理意见