我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [求助]CDialog中画图问题(已解决) 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

abcd0106





性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1093
威望: 0
浮云: 1049
在线等级:
注册时间: 2005-10-08
最后登陆: 2009-04-04

5come5帮你背单词 [ soul /səul/ n. 心灵,灵魂,人,精华,中心人物 ]


[求助]CDialog中画图问题(已解决)

我想画一个动态的正弦波,结果画的图形却是静态的.
有什么办法让它动起来.(把它最小化,恢复之后图像是改变了)



下面是OnPaint代码.
void CMyDlg::OnPaint()
{
  /*
  if (IsIconic())
  {
    CPaintDC dc(this); // 用于绘制的设备上下文

    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

    // 使图标在工作矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
  }
  //else
  */
  {
    CPaintDC dc(this);
    //SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);    
   
   

    CRect rt( 270, 35, 600, 335 );
    dc.Rectangle( &rt );
    //draw y
    dc.MoveTo( rt.left+10 , rt.top );
    dc.LineTo( rt.left+10, rt.bottom );
    //draw x
    dc.MoveTo( rt.left , 185 );
    dc.LineTo( rt.right , 185 );
    //画刻度
    for( int i=rt.left+10; i<rt.right; i+=10 )
    {
        dc.MoveTo( i, 180 );
        dc.LineTo( i, 185 );
    }
    //90.
    dc.MoveTo( 370, 175 );
    dc.LineTo( 370, 185 );
    //180
    dc.MoveTo( 460, 170 );
    dc.LineTo( 460, 185 );
    //270
    dc.MoveTo( 550, 175 );
    dc.LineTo( 550, 185 );
   
    //通信成功
    //if( m_bOpen )
    {
        //Darw F
        //dc.DrawText( "频率:",0, );
        CString str;
        str.Format( "频率:%d",rt.bottom ); //
        dc.DrawText( str, strlen(str), CRect(380,340,580,440), 0 );  

        //str.Format( "m_Time=%d", m_Time );
        //MessageBox( str, "fds", 0 );

        int dx, dy, dx0=m_Time, dy0=185;
        int index = 0, count=0;
        //画280~m_Time的正弦波
        for( int i=m_Time; i>=280; i-=5 )
        {
          dx = i;
          dy = 185 - m_nV*50*Array[index];
          //point[index].x = i;
          //point[index].y = 185 - m_nV*50*Array[index];;

          dc.MoveTo( dx0, dy0 );
          dc.LineTo( dx, dy );
         
         
         
          dx0 = dx;
          dy0 = dy;

          index--;
          //count++;
          if( index < 0 ) index=Max;
            //MessageBox( str, "fds", 0 );
         
        }
        //dc.Polyline( point, count );
       

        dx0=m_Time;
        dy0=185;
        index = 0;
        //画m_Time~600的正弦波
        for( int i=m_Time; i<=600; i+=5 )
        {
          dx = i;
          dy = 185 - m_nV*50*Array[index];

          dc.MoveTo( dx0, dy0 );
          dc.LineTo( dx, dy );

          dx0 = dx;
          dy0 = dy;

          index++;
          if( index > Max ) index=0;
        }
        }
        CDialog::OnPaint();
  }
}


[ 此贴被abcd0106在2006-09-17 22:58重新编辑 ]
顶端 Posted: 2006-09-17 12:10 | [楼 主]
newton



性别: 保密 状态: 该用户目前不在线
头衔: Messi + Aimar
等级: 人见人爱
家族: 考研俱乐部
发贴: 2770
威望: 1
浮云: 1777
在线等级:
注册时间: 2004-11-27
最后登陆: 2017-06-08

5come5帮你背单词 [ hasty /'heisti/ a. 匆忙的,性急的 ]


没浮云。不帮忙。.
顶端 Posted: 2006-09-17 12:54 | [1 楼]
abcd0106





性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1093
威望: 0
浮云: 1049
在线等级:
注册时间: 2005-10-08
最后登陆: 2009-04-04

5come5帮你背单词 [ counter /'kauntə/ n. 计数器,柜台,反面,相反的(地);反对的(地);a. & ad. 反对,对抗 ]


用SendMessage(),也没有作用.
不知道为什么?
顶端 Posted: 2006-09-17 13:39 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.016021(s) query 7, Time now is:05-21 18:25, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号