下午还在问区域生长的问题,没想到晚上一个灵感就搞定了。
其实魔术棒的实现也不难,不管是连续的还是非连续的。希望将来还搞这个的有信心。

解决方案 »

  1.   

    牛 都有点像Photoshop的感觉了
      

  2.   

    1.首先是蠕动线的实现,蠕动线完全是可以用windows的RGN对象实现,关键是要给她确定几种不同的刷子,这些刷子可以用CreatePatterBrush实现,然后定时循环使用。在显示的时候不要使用FrameRgn,因为这个函数在选区变得稍微复杂的时候会大量占用CPU资源,对于魔术棒这样的复杂选区根本就适用,所以可以改用FillRgn,这里就有一个提取RGN边缘的技巧。
    2.对于全局的魔术棒,起基本原理就是和异型图像窗体的原理类似。但是不能疯狂的适用combinergn,要用ExtCreateRgn函数,这样的效率会大大提高。
    3.对于连续的魔术棒,则可以利用种子填充算法得到一个范围,然后表示出这个范围的边缘。
      

  3.   

    hehe
    研究了很久的东西,总喜欢一个人先收藏下。