解决方案 »

  1.   

    应该没问题吧,是我们美工做的图标,看图标没有问题,做的是矢量图,但放到form上后显示在桌面上就有毛边了。我用Graphics画个圈也有毛边,是不是和TransparencyKey这个属性去掉背景色有关系啊?迅雷都怎么做的呢。
      

  2.   

    你做成Icon显示试试.某些格式的图片,单独看没问题,放程序里,那些设置透明的部分都会显示成白色
      

  3.   

    给你个网址:https://www.iconfinder.com/
      

  4.   

    谢谢  但是没有找到迅雷浮动窗体的图标。我程序就是form加载个图片,然后用TransparencyKey属性去掉form背景色,是form显示的形状就是图片的形状。不知道这样做程序有没有问题。因为我现在有点晕,不知道是图片的问题还是程序还要做一些处理。希望有大神能解答一下。
      

  5.   

    背后的蓝色是桌面屏幕的背景色,有点发白的那些就是form的背景色了,没完全去掉还有毛边
      

  6.   

    很正常,只能自己去画了 然后调用UpdateLayeredWindow 绘制到屏幕
      

  7.   

    没这么做过,这个要怎么做,是在UpdateLayeredWindow 事件里  给屏幕上直接画图吗? 那对应的事件和调用的功能也都能加上吗?
      

  8.   

    UpdateLayeredWindow 是win api
      

  9.   

    可选简化代码量配件:
    DSAPI.DLL DSAPI.图形图像.透明窗体.窗体支持鼠标拖动(图片所在窗体, True)
                DSAPI.图形图像.透明窗体.显示图像(图片所在窗体, 要显示的图像PNG格式, 255)
      

  10.   

    属性里面有个ColorDepth,设置为Depth32Bit就好了,默认为Depth16Bit就会有毛边
      

  11.   

    19楼的kukson       属性里面有个ColorDepth 是什么的属性  是窗体的属性吗? 没有啊?
      

  12.   

    20楼的wawd74520     能具体说说怎么做吗?
      

  13.   

    试了一下,应该就是图片问题
    图片边缘的颜色,与Form的TransparencyKey是不同的,所以没法透明化
      

  14.   

    比如说 19楼的 kukson  说的属性我只在ImageList里面知道了对应的属性   确实默认不是32   但我希望用的是窗体背景色   不知道该怎么设置   设置了imagelist对应为32   窗体背景引用里面图片也是不行  
      

  15.   

    图片什么格式?PNG么? 你用的什么处理方式处理透明Alpha区域?
    如果是PNG带Alpha区域的,使用TransparencyKey是不能实现的。那只是单色“透明”,只能自己绘制
    使用TransparencyKey透明的一般做法是制作一个BMP格式的图片,背景要透明的地方使用不常用的颜色(一般用品红255,0,255,然后)TransparencyKey设置同色就可以了
      

  16.   

    finemi   我试过了  也不行   四周有一圈品红颜色
      

  17.   

    图片处理得好的话,只是设置个TransparencyKey我觉得没啥问题啊
    黑圈是窗体,红色是我放的桌面颜色
      

  18.   

    你用C#的去背景色来做的话,就要让美工去掉边缘的半透明、模糊之类的效果,并且图片做的大一些,这样在你使用的是或缩小到你需要的尺寸,效果就好一些了。如果自己画图,就要好很多了。使用UpdateLayeredWindow 的话,编程复杂度就增加了。
    不仅仅适用这个一个winapi,需要一组对应的才能使用。
      

  19.   

    现在就用的是UpdateLayeredWindow可以  但是觉得太复杂,后面窗体功能要修改的话也有些麻烦。但图片各种都做过了,还是不行。暂时也只能用UpdateLayeredWindow来实现。 用其他技术对接然后引用也可以做到,不过都要复杂一点。
      

  20.   

    问题已解决 主要有2种办法 一种UpdateLayeredWindow   一种是wpf   谢谢大家!