小弟最近在开发一个图形化编程软件,其中涉及要一个操作块组合,目前采用的是下面的方式。不知道下面的不规则图形应该如何开发谢谢
实际上这些块是可以相互分离的,但是重点在于其中的 图片与图片是可以相扣的
每个块都有沟沟槽槽
可以采用下面的方式进行相扣
有过相关开发经验的牛人,谢谢你们的不吝赐教,谢谢

解决方案 »

  1.   

    一言难尽那,楼主。
    首先你要对你的那些图形组件设计一种合理的数据结构。假定,叫Component类,那么要能自我绘制,同时还要具备和其他图形边界检查的能力。这些类的对象,还要能相互组合,成为一个新对象。总之首先你要做好设计一种适合表达你的程序的模型。有点麻烦就是。
      

  2.   

    是啊,用CRgn 那些什么圆形窗口的,都是用CRgn 加外围限制做出来的.
      

  3.   

    给个代码楼主参考一下吧.
    先加一个响应WM_CREATE的
    在OnCreate中加入 CRgn rgn;
    rgn.CreateEllipticRgn(0,0,500,500);
    SetWindowRgn((HRGN)rgn.m_hObject,1);这样我们做出来的,就是在这个 0,0,500,500 圆里的窗口了.要做什么棱形,上面是椭圆,下面是矩形的,楼主就要先看看CRgn 的用法,建几个形状,大家做逻辑包含的运算,最后得出你要的CRgn结果.
    再把该 CRgn 设入你的窗里,就成为了各种形状的窗口了
      

  4.   


    CRgn rgn1;
    rgn1.CreateEllipticRgn(0,0,500,500);
    CRgn rgn2;
    rgn2.CreateRectRgn(0,200,500,500);
    rgn2.CombineRgn(&rgn1,&rgn2,RGN_OR); //上面半圆下面方,或起来
    SetWindowRgn((HRGN)rgn2.m_hObject,1);
    像上面那样,2个区域或起来,就成了上面半圆下面方的形状的窗了.
      

  5.   

    这个我个人认为不难
    15楼的说的就是一个方法至于拖动,OnMouseMove里的point的x y坐标值和点击下去的坐标值进行偏移量计算
    然后获得需要移动的窗口的rect,在进行movewindow就可以了
      

  6.   

    用setWindowRgn可以实现,首先要创建一个非规则的RGN