我想实现一个小球单独在桌面上运行, 但是一直弄不好,也问 过大家啦,还是弄不明白,主要就是一个圆形小球在桌面上,背景啊什么的都不要看到.各位弟兄多多帮下忙,谢谢,顺祝大伙国庆快乐!

解决方案 »

  1.   

    几个关键技术
    1:TopMost = true;
    2:设置Border = None;
    3:设置窗口的region为你指定的圆形。
      

  2.   

    TO phy
    设置窗口的region为你指定的圆形,但是在桌面上出现的时候还是会出现我指定图形的背景,该怎么办呢?
      

  3.   

     你说的这句话是什么意思?我说的是调用类似于
    SetWindowsRegion()这个函数,指定窗口的外形区域可以实现透明窗口。这种设置使得窗口的实际显示区域不会走出你指定的Region,不可能还在圆形之外显示任何内容的。你是用的什么方法显示什么指定图形?
      

  4.   

    TO phy;
    一般图形都是在方框内的,我运行的时候也出现边框了,以下是我代码,但是没用到你说的SetWindowsRegion()这个函数,我用到的是异形图.但是我不知道要怎样修改其边框.使其看不到.
    namespace yixingtu
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
            }
            private Region BmpRgn(Bitmap Picture, Color TransparentColor)
            {
                int nWidth = Picture.Width;
                int nHeight = Picture.Height;
                Region rgn = new Region();            rgn.MakeEmpty();            bool isTransRgn;//前一个点是否在透明区
                Color curColor;//当前点的颜色
                Rectangle curRect = new Rectangle();
                curRect.Height = 1;            int x = 0, y = 0;            //逐像素扫描这个图片,找出非透明色部分区域并合并起来。            for (y = 0; y < nHeight; ++y)
                {
                    isTransRgn = true;                for (x = 0; x < nWidth; ++x)
                    {
                        curColor = Picture.GetPixel(x, y);                    if (curColor == TransparentColor || x == nWidth - 1)//如果遇到透明色或行尾
                        {
                            if (isTransRgn == false)//退出有效
                            {
                                curRect.Width = x - curRect.X;
                                rgn.Union(curRect);
                            }
                        }
                        else//非透明色
                        {
                            if (isTransRgn == true)//进入有效区
                            {
                                curRect.X = x;
                                curRect.Y = y;
                            }                    }//if curColor                    isTransRgn = curColor == TransparentColor;                }//for x
                }//for y            return rgn;
            }
            private void Form1_Load(object sender, EventArgs e)
            {                   }        private void button1_Click(object sender, EventArgs e)
            {
              this.Region = BmpRgn(new Bitmap("d:\\a.gif"), Color.FromArgb(0, 0, 0));
            }
      

  5.   

    晕,那有什么用……
    参考这个页面:
    http://www.chenjiliang.com/Article/View.aspx?ArticleID=375&TypeID=79
    http://www.chenjiliang.com/Article/View.aspx?ArticleID=374&TypeID=79介绍得很详细,有源代码实现。
      

  6.   

    用PNG序列图或者GIF可以实现图片的背景镂空,然后贴到窗体上,用什么控件或者方法贴都可以了
    然后设置窗体的背景色和transparentkey和窗体的背景色一样,还有窗体border为none
    这样就只剩下你的图片了