如何制作透明的表格

时间:2015-03-17 17:20:25

标签: c# wpf winforms

在提出问题之前,我很抱歉我不是英语母语,所以我的判决可能很尴尬。我的问题如下。

我正在制作一个在透明窗体上绘制的项目。 我使用c#来制作这个项目。我的代码如下。

    public NoteForm()
    {
        InitializeComponent();

        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        this.BackColor = Color.Transparent;
    }

    public void PaintOnForm()
    {
        System.Drawing.Graphics g = this.CreateGraphics();
        Pen pen = new Pen(System.Drawing.Color.Black, 5);

        g.DrawLine(pen, 0, 0, 50, 50);

        Console.WriteLine("write!");
    }

我也试过了。

    public NoteForm()
    {
        InitializeComponent();

        this.BackColor = Color.Blue;
        TransparencyKey = Color.Blue;
    }

    public void PaintOnForm()
    {
        System.Drawing.Graphics g = this.CreateGraphics();
        Pen pen = new Pen(System.Drawing.Color.Black, 5);

        g.DrawLine(pen, 0, 0, 50, 50);

        Console.WriteLine("write!");
    }

当我尝试使背景不透明时,它会正确绘制线条。 但是,当我尝试使背景透明时,不会显示任何行。

如何制作透明的窗体?

如果有其他方法可以用C#(例如WPF)制作解决方案,你能告诉我吗?

1 个答案:

答案 0 :(得分:0)

要使WPF窗口透明,您需要设置几个属性。 Background =“Transparent”,AllowTransparency =“True”,WindowStyle =“None”:

<Window x:Class="WpfApplication8.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    Background="Transparent"
    AllowsTransparency="True"
    WindowStyle="None">
<Border BorderBrush="White" BorderThickness="2">
    <Canvas x:Name="Canvas" />
</Border>

关于在窗户上画画,我建议在画布上画画 除非您定义一个画布,否则画布将没有定义背景画笔,因此您不必在那里做任何特殊操作。

要绘制你的行,假设你想在代码中执行它(你可以在XAML中执行它,取决于你的用例):

    public MainWindow()
    {
        InitializeComponent();

        var line = new Line { Stroke = new SolidColorBrush(Colors.Black), StrokeThickness = 5, X1 = 0, Y1 = 0, X2 = 50, Y2 = 50 };
        this.Canvas.Children.Add(line);
    }