在一个类中我想使用Graphics,Bitmap,Rect分别建立对象,以便在这个类中的不同函数间使用他们?
但问题是不能在类中建立对象阿。举个例子:
Graphics gc(pDC->m_hDC);
Rect(Img.left,Img.top,Img.Width(),Img.Height());//CRect Img;
Bitmap(Rect.Width,Rect.Height);上述建立对象的例子表明无法在类中建立对象,进而无法在不同函数中使用!请问大侠们,谁能实现我的目的 ?

解决方案 »

  1.   

    Graphics   gc(pDC-> m_hDC);
    Rect rc(Img.left,Img.top,Img.Width(),Img.Height());//CRect   Img;
    Bitmap bmp(Rect.Width,Rect.Height); 
      

  2.   

    类中声明:
    Graphics   gc;
    CRect Rect;
    Bitmap bp;使用的时候
    gc=Graphics(pDC-> m_hDC); 
    Rect=(Img.left,Img.top,Img.Width(),Img.Height());//CRect   Img; 
    bp=Bitmap(Rect.Width,Rect.Height); 
      

  3.   

    BBirdlyh理解我的意思了,但是我试过了,不能通过编译。
    原因是cannot access protected member declared in class 'Gdiplus::Graphics'。
    我估计是gc=Graphics(pDC->m_hDC);这种写法在Gdiplus中属于受保护的,外面的类不能访问。
      

  4.   

    GDI+对象定义的时候就要立即初始化,你的Graphics对象定义没有什么问题啊。
    下面的Bitmap对象就不知道怎么回事了,Rect是一个GDI+的类,怎么可以这样用?
      

  5.   

    Rect和Bitmap类是GDI+中的新类,可以象我这么定义的!
    GDI+对象定义必须立即初始化吗?
    我想在同个类(自己定义的类)中的不同函数间能操作同一个对象(Graphics gd);可惜找不到办法
    难道我每在一个函数中都要重复上述步骤吗?实在繁琐啊
      

  6.   

    如果是Graphics对象,你只要设置一个HDC的成员变量就可以了,以后每次调用的时候就以此变量为参数构造一个Graphics对象,这样也可以,反正实际上所有的操作都是施加在这个变量上,这点和GDI+和GDI其实是一样的。
      

  7.   

    其实我也这么想的,但是总觉得GDI+这样的设计有缺陷,比较麻烦,这点不如GDI.谢谢
      

  8.   

    还有个问题,我有个画图操作。思路是先在内存中画完,然后拷贝到当前设备中,然后把当前设备中的位图,再拷回内存中,进行下个周期性的画图!
    方法是采用GDI+,在两个线程里,同时获取同一个HDC,在上面画图,会不会相互影响,产生以外的结果?
      

  9.   

    我怀疑是LZ的理解和使用有问题,同意8楼说的。Graphics   gc(pDC-> m_hDC);绝对是可以这样用的。
      

  10.   

    第说LZ的问题,您应该是GDI+配置及使用的问题,可以看看这个
    http://blog.csdn.net/np1234/archive/2007/12/23/1963343.aspx
    如果还没有解决可以找我,因为GDI+在声明时有很强的位置要求,把代码发给我,给你解决.
    第二个10楼的问题,线程的使用中,是有共用一个资源的说法的,你还是自己回去看看多线程的使用吧.
      

  11.   


    在我的blog中的源码能解决你的问题 
     
    欢迎访问 我的blog http://blog.csdn.net/Fxingtianxia/