扩展CStatic类,在OnPaint事件里面写代码:
if(a==1)
  画圆
else
  画直线(不让圆出现)默认是画圆,CStatic扩展类的控件在对话框中,但是当我把a设置成其他数值,并且刷新Static扩展类时,却同时出现了两个图形。只有当我把对话框最小化后,再最大化,才会只有一条直线出现。要的就是这个效果。
现在的问题是我在OnPaint事件中,不想把所有的区域都填上背景色再画图,因为我想让这个控件是透明的,不会覆盖对话框的其他控件。

解决方案 »

  1.   

    long int rop = pDC->SetROP2(R2_XORPEN) ;//然后在这里添加绘画代码pDC->SetROP2(rop) ;需要注意的的是:绘画的时候要把上次的图形也绘画一次,然后绘画这次的图形!原理就是异或,
     x 异或 y 异或 x  = y
      

  2.   

    先清楚背景再说!
    hbrBackground
      

  3.   

    long int rop = pDC->SetROP2(R2_XORPEN) ;//绘画1---旧图形(上次的)//绘画2---新图形pDC->SetROP2(rop) ;
      

  4.   

    GetParent()->DefWindProc(WM_PAINT, (WPARAM)dc.m_hDC, (LPARAM)0);
      

  5.   

    CYourStatic::OnPaint()
    {
      CPaintDC dc(this);
      if(a==1)
         用当前背景色绘制整个区域;//用以覆盖以前的绘图 。
         画圆;
      else
         用当前背景色绘制整个区域;
         画直线;
    }