c#wpf多边形到位图不显示任何内容

对不起,如果您认为这个问题已经得到解答,我确实到处试图找出当我这样做的时候,它没有显示任何内容。 这是我的全部代码:

Polygon hexagon = new Polygon(); PointCollection pc = new PointCollection(); double side = 25; double xOffset = 0, yOffset = 0; double r = System.Math.Cos((System.Math.PI / 180) * 30) * side; double h = System.Math.Sin((System.Math.PI / 180) * 30) * side; //Create the 6 points needed to create a hexagon pc.Add(new Point(xOffset, yOffset)); //Point 1 pc.Add(new Point(xOffset + side, yOffset)); //Point 2 pc.Add(new Point(xOffset + side + h, yOffset + r)); //Point 3 pc.Add(new Point(xOffset + side, yOffset + 2 * r)); //Point 4 pc.Add(new Point(xOffset, yOffset + 2 * r)); //Point 5 pc.Add(new Point(xOffset - h, yOffset + r)); //Point 6 hexagon.Stroke = Brushes.Blue; hexagon.StrokeThickness = 1; hexagon.Fill = Brushes.LightBlue; hexagon.Points = pc; RenderTargetBitmap bmp = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Default); bmp.Render(hexagon); img.Source = bmp; 

我创建了一个六边形作为多边形对象,我使用RenderTargetBitmap尝试将多边形转换为位图,但它似乎没有显示我能看到的任何内容。 我还添加了一个canvas并在那里添加了Polygon对象,这似乎有效。 它只是在转换为位图时。 我真的很想知道我的代码中有什么问题。 我现在在主要的Windows加载事件中拥有一切。

感谢帮助,谢谢。

解决方案可能很简单,也可能是我忽略的东西,希望解决方案很简单:)。

WPF UIElement必须在可见之前进行布局。 它必须至少得到一个MeasureArrange调用,它获得一个可用的Size和一个最终的Rect(通常来自它的父Panel)。 将新创建的元素渲染到RenderTargetBitmap时,您将手动调用这些方法,并使用适当的Size和Rect值:

 ... hexagon.Measure(new Size(200, 200)); // adjust this to your needs hexagon.Arrange(new Rect(0, 0, 200, 200)); // adjust this to your needs var bmp = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Default); bmp.Render(hexagon);