关于实现纹理画笔? 问题是这样的我实现了一种纹理画笔是通过继承Stroke,然后实现DrawCore,用ImageBrush作为背景画刷,但是这样实现的纹理画笔效果并不是我所期望的,我希望实现类似“刮刮纸”那样的效果。鼠标移动绘制好像在刮刮刮纸一样,最后刮完上面一层看到的就死我们所期待的背景图片的(也就是我的纹理了)这里的纹理是根据其大小然后平铺填充到整个画板的。其实有点类似在以纹理为背景在纹理上面放了一个遮罩层,然后当鼠标移动时候(就是绘制的过程),获取鼠标点,然后取出对应遮罩层的该店轨迹,显示纹理的某部分~==
求思路哈, 表述如果有不清楚的地方大家可以跟帖,在线坐等,牛人哈~ 备注: WPF

解决方案 »

  1.   

    Quote: 引用 楼主 sophy520eangel 的回复:
    最后刮完上面一层看到的就死 quote]搞诅咒啊,不会
      

  2.   

    下面放置背景,上面布满1px*1px的panel,鼠标掠过,掠过的和简单的随机计算周围的panel移除,擦出痕迹符合鼠标轨迹效率一定不高,但有效
      

  3.   


    这种方法是有效,但是在我们工程中不能使用~ 而且效率也不好~不过我尝试过用的是Stroke,然后利用Stroke的Draw方法绘制(开始先根据画板的高和宽收集一系列有效坐标点),然后再鼠标移动过程中通过Stroke的remove移除指定的点~ 结果还没测试,不知道是否可行
      

  4.   


    最早想法是这样的,将纹理图片作为背景,然后上面再弄个遮罩层,当鼠标经过时候取鼠标经过点的A值为透明,但是考虑到后面橡皮擦擦除的问题,所以没有使用~ 不知道能不能用stroke来做呢???
      

  5.   

    就是两层图片么,上层用WriteableBitmap,下层是一个固定的图片
    可以参考MSDN的帮助 
    http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx可以绘图,但是能不能达到你要的效果,自己测试下吧
      

  6.   


    恩,我测试了下,使用WriteableBitmap是可以实现位图的绘制,但是跟我的需求确实不一样的,因为我要的是遮罩层是白底的,让鼠标移动时候,遮罩层可以被擦除或者鼠标经过的遮罩层位置变成透明,从而实现透过遮罩层可以看到下层的图片
      

  7.   


    楼主,记录鼠标滑过的区域所有的像素点.这些点的格式是ARGB,你把A改成透明可行否?
      

  8.   

    听着有点像某个叫做“妄撮”的游戏。既然已经实现了纹理画笔,可否在初始化的时候新建一个Stroke,画一张完整的前景图盖在InkCanvas上,然后再把InkCanvas的EditingMode设置为EraseByPoint。