在提出问题之前,我很抱歉我不是英语母语,所以我的判决可能很尴尬。我的问题如下。
我正在制作一个在透明窗体上绘制的项目。 我使用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)制作解决方案,你能告诉我吗?
答案 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);
}