我在picturebox中有一个选区,选区可以用shape空间来实现,但是现在要能改变shape的大小,我想做个类似于QQ的那种,可以拖动大小的,该如何实现?
我想一定有人实现过的,

解决方案 »

  1.   

    对于有句柄的控件实际上用setwindowlong给窗口附加一个ws_sizebox风格即可不过,对于没有句柄的控件,用上面的方法就不行了,即使控件有句柄用上面的方法,也会使控件出现难看的边框,不建议用上面的方法(不过用也可以,它的优点是代码简单)  
       
      如果不怕麻烦的话,建议从:  
      http://www.china-askpro.com/download/formdsgn.zip  
      下载源程序研究一下,这个程序可以很好的解决你的问题,只是代码长了点,慢慢看吧,你会有收获的:)
      

  2.   

    那个代码我看了 ,我想问下函数DrawDragRect中的这句
        hPen = CreatePen(PS_SOLID, 1, 0)
    我改为    hPen = CreatePen(PS_SOLID, 1, vbred)
    为什么边框还是黑色,而不是用红色啊 我的边框是用FrameRect画的,你能告诉这种情况下用异或笔画的话该如何做啊。
      

  3.   

    FrameRect是用指定的刷子围绕一个矩形画一个边框(组成一个帧),所以你想改变颜色的话,就要先创建一个指定颜色的刷子(用CreateBrushIndirect)
      

  4.   

    Private Sub DrawDragRect()
        Dim hBrush As Long
        Dim hScreenDC As Long, nDrawMode As Long
        Dim rct As RECT
        'Get DC of entire screen in order to
        'draw on top of all controls
        hScreenDC = GetDC(0)
        'Select GDI object
        nDrawMode = SetROP2(hScreenDC, R2_NOT)
        'Draw rectangle
        SetRect rct, m_DragRect.Left, m_DragRect.Top, _
            m_DragRect.Right, m_DragRect.Bottom
        hBrush = CreateSolidBrush(vbRed)
        FrameRect hScreenDC, rct, hBrush
        SetROP2 hScreenDC, nDrawMode
      
        ReleaseDC 0, hScreenDC
        'Delete GDI objects
        DeleteObject hBrush
    End Sub我这样该的,有严重的拖尾效果啊,该如何办呢?
      

  5.   

     用了SetROP2 好象那些画笔,刷子的颜色设置就没有用了,
    对于矩形区域,可以用在mousemove事件中bitlbt四条线的所覆盖的图象就可以自由控制了.
      

  6.   

    HAHA
    我在我博克里曾写过模拟QQ截屏的代码,可是哪个是不会周边8个角的控制和虚线框的绘制,现在我做了个模拟PS蠕动边框加QQ8角边框的代码了,边框可以用8个PICTUREBOX模拟,