【发布时间】:2012-06-15 14:00:24
【问题描述】:
当我画出这样的东西时(这里只是随机画):
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DrawingVisual visual = new DrawingVisual();
DrawingContext context = visual.RenderOpen();
Pen pen = new Pen(Brushes.Black, 1);
context.DrawEllipse(Brushes.YellowGreen, pen, new Point(0,0), 40, 40);
for (int i = 0; i <= 100 - 1; i++)
context.DrawLine(new Pen(Brushes.Black, 1), new Point(0, i), new Point(i, i));
context.Close();
RenderTargetBitmap bmp = new RenderTargetBitmap(100, 100, 96, 96, PixelFormats.Pbgra32);
bmp.Render(visual);
image1.Source = bmp;
}
}
DrawLine 和 DrawEllipse 的颜色混合在一起。(我发现它只适用于使用笔的 DrawLine,而不是使用 Brush 的其他形式,如 Rectangle 和 Ellipse)。奇怪的是,即使使用来自底层网格背景 (argh) 的 LinearGradientBrush 的颜色。 我希望它们都以完全不透明的方式进行 z 排序。
这里是 XAML 代码:
<Window x:Class="WpfApplication2.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">
<Image Name="image1" Stretch="None" />
</Window>
感谢您的帮助。
【问题讨论】:
-
我通过使用带有填充画笔的 DrawRectangle 用笔插入 DrawLine 做了一个解决方法。我仍然想知道为什么钢笔没有完全不透明度。
-
Pen已完全不透明,但在您的情况下,线条太细以至于它们变得模糊并且似乎是半透明的。阅读我的答案以获取更多信息和建议的解决方案:)。绘制矩形允许您仅模拟水平线和垂直线。画线,但宽度更大应该可以解决问题;)。
标签: wpf transparency opacity z-order drawingcontext