如何在透明窗体上画出不透明的线条
并且透明处不能让鼠标穿透。
--

解决方案 »

  1.   

    1, 画一个透明窗体
    2, 创建个pen,用pen在透明窗体上画自由线(通过鼠标移动,把线画出来)
    3, 为了能用鼠标画,在透明窗体上不能让鼠标消息穿透(因为不做特殊处理的话,透明窗体上的鼠标消息会被传到下层窗体)
      

  2.   

    其实也就是透明窗体消息拦截
    1 用showDialog。
    2.因为已经完全透明了.所以就穿透了.可以设置透明度为1%。
    3.Graphics.FillRectangle填充一层Color.Fromargb(1,255,255,255)虽然看起来还是透明的,但实际已经不穿透了。
      

  3.   

    1 用showDialog。
      此方法不能用,因为架构问题
    2.因为已经完全透明了.所以就穿透了.可以设置透明度为1%。
      此方法也将画在透明窗体上的线条透明了
    3.Graphics.FillRectangle填充一层Color.Fromargb(1,255,255,255)虽然看起来还是透明的,但实际已经不穿透了。
      此方法也可能将画在透明窗体上的线条透明了
      

  4.   

    hook透明窗体范围内的鼠标消息,因为是透明的窗体,直接画到窗体后面的窗体上。纯想法
      

  5.   

    以下链接希望能对你有所帮助。用一个背景透明的窗体 覆盖在该半透明窗体上 在背景透明的窗体上画线
    http://www.cnblogs.com/jianu/archive/2010/07/03/1770293.html 
      

  6.   

    用TransparencyKey应该可以.但TransparencyKey应该尽可能设成你不会用到的颜色,同时把BackColor也设成同一颜色,就可以达到透明的效果. using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;namespace WindowsFormsApplication35
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            this.FormBorderStyle = FormBorderStyle.None;
                this.Paint += new PaintEventHandler(Form1_Paint);
            }        void Form1_Paint(object sender, PaintEventArgs e)
            {
                GraphicsPath GP = new GraphicsPath();
                GP.AddPie(new Rectangle(0, 0, 100, 100), 0, 100);
                GP.AddLine(0, 0, 200, 200);
                this.Region = new Region(GP);            Graphics G = this.CreateGraphics();
                G.FillPie(Brushes.Red, new Rectangle(0, 0, 100, 100), 0, 100);
                G.DrawLine(Pens.Black, 0, 0, 200, 200);
                G.Dispose();
            }
        }
    }
      

  7.   

    不知道  dabao1026 有没有 解决这个问题啊?分享一下吧。