小弟在做一个画图程序 在橡皮擦功能这卡住了 本来想用底色来实现的 ,可是老板要求控件是透明的 在画图控件下要求可以透出图片,真的没方向了
各位给个建议吧 谢谢各位~

解决方案 »

  1.   

    画图的时候往bitmap上面画,设置底色为透明色(MakeTransparent),重绘的时候用Graphics把bitmap往窗体上画试试。
      

  2.   

    真不知道你怎么想的,谁要你改下面的图片了,下面的图片当然不变。
    上层画图当然要另外创建一个bitmap,不仅如此,最好还要另外创建一个容器(窗体)放置在你所谓的背景(控件)上面
      

  3.   

    不过,也可以直接在paint中绘图,在paintbackground中画背景,都自己画就行了
      

  4.   

    上层控件我放的picturebox  可以画图的 但是 橡皮擦的功能是仅仅擦去我轨迹经过的笔迹 擦去后显示下面的图片 我在想能不能有个方法 只要我把轨迹经过的地方颜色设置为无象素就可以了 谢谢大家了
      

  5.   

    绘制为透明色 rgb不包含透明色 网上查了点 透明的地方其实就是无象素的地方
      

  6.   

    Bitmap是可以支持透明色的,可以设置任意颜色为透明色,在绘图的时候它会自动不绘制该颜色。
    很多其他格式的图片支持ARGB的。
    自己不去试,光在这理论有什么用
      

  7.   

    这个题好熟悉阿,我一个朋友公司的员工问过我呀,没告诉,嘿嘿,是不是一个人呢
    ││博客空间:http://blog.csdn.net/lovingkiss
    ││资源下载:http://download.csdn.net/user/lovingkiss
    ││Email:loving-kiss@163.com
    ││联系方式:Q66840199 项目、聊天、咨询、探讨、统统收费,呵呵......
    ╚---------------------------------------------------------------------------------------------------------ō*︻$▅▆▇◤ 
      

  8.   

    试过了,使用MakeTransparent是可以的,不过效率太低。
    把图片画到窗体的时候这么绘
    attributes = new ImageAttributes();
    attributes.SetColorKey(transparentColor, transparentColor);
    graphics.DrawImage(this, destRect, 0, 0, size.Width, size.Height, GraphicsUnit.Pixel, attributes, null, IntPtr.Zero);
    其中transparentColor就是图片的透明色,尽量将attributes,graphics等搞成成员变量,以提高性能。
    擦除的时候直接在图片上用transparentColor画完后再Invalidate就可以了
      

  9.   

    谢谢 各位帮我的朋友 谢谢lake_cx  我也在搞 成了贴出来
      

  10.   

    我已经做过demo了,是没问题的。