我想在一个picture 区绘制一个固定大小的矩形框,让这个矩形框内的图形在另一个(第二个)的picture区域中显示出来,而矩形框可被鼠标拖着移动,请问,我该怎么做呢!!!!重点是我不明白这个矩形框该怎么画(如果是用控件,是什么控件,是Picture么,该怎么设置它的属性呢),怎样获得它的画布区。不知我说的明不明白呢。如果我想画一个照相机的取景那样的只有几只角的那种,又该怎么画呢??还有,我想将第二个picture区域可以显示1张图片,or 两张 or 四张图片,怎样动态调整每次图片的位置(每张图片都显示在一个一个picture区域中,这4个区域又在第二个picture区域中),即动态调整picture区域的显示位置!

解决方案 »

  1.   

    对了,在picture中只能显示图标文件或者位图么,可我想要在picture区域中显示jpg图像啊!!
      

  2.   

    移动图片用双缓冲。加载了jpg在picture中也是可以显示的。
      

  3.   

    双缓冲的机制基本上就是用两个cdc,一个属于内存的m_memdc,一个显示设备的m_dc。
    当鼠标按下时,将矩形框中的位图bitblt到内存中。
    鼠标移动是,插掉上次的位图,并把m_memdc中的位图bitblt到picture上。
    当鼠标抬起时,将m_memdc中的位图定位。
    要用到的函数有bitblt,createcompatibledc,invalidaterect等。
      

  4.   

    再补充一点,就是,矩形框的功能是截取在他的父窗口中显示的图像,有点像橡皮圈的意思,把它截取的图像显示在第二个picture区域中。不知用picture的frame属性能不能当矩形框用完成这个功能??
      

  5.   

    首先谢谢enoloo(行者无疆) 。而且,矩形框是能够用鼠标拖动的,即我能够在父窗口中拖动这个矩形框,随意的截取图片,然后把它显示到第二个picture区域中。不知这回我说明白没阿!!
      

  6.   

    各位,我要现实的是:利用DIB来实现图像的显示,再存储。不是用GDI位图
      

  7.   

    用bitblt,首先获得pic的指针,如果是static控件的显示设备,将他命名IDC_STATIC2,然后
    CDC* pdc = GetDlgItem(IDC_STATIC2)->GetWindowDC() ;
    然后用bitblt到另外一个dc.
      

  8.   

    ^0^
    http://www.7forever.com/c3d/study/copybmp.rar解决过的问题.5.14之后解决的好像