2011-02-23 32 views
0

其实我试图将矩形转换为wpf中的位图。这里我所做的意思是,首先我已经将该矩形添加到画布,然后我将转换为位图。在这里,我已经编写了在form_load下添加矩形的代码并将其转换为位图,我已经在buttonclick下编写了代码。然后它完美地创建位图。如何将矩形转换为wpf中的位图

的Form_Load ....

Canvas can = new Canvas(); 
can.ClipToBounds=true; 

Rectangle rect = new Rectangle(); 
rect.Height = 200; 
rect.Width = 50; 
can.Height = 200; 
can.Width = 50; 
rect.Fill = color................. 
can.Children.add(rect); 

button_click

TargetBitmapRenderer bit = new TargetBitmapRenderer((int)can.ActualWidth,(int)Can.ActualHeight, 96, 96, PixelFormats.Pbgra32); 
...... 
..... 

上面的代码工作完美... 但如果写在CLIK按钮中的代码formload事件, 实际宽度和实际画布的高度为零,这就是为什么它创建错误....

BUt我想单点动态创建位图e代码块... 然后请建议我一些方法来实现这一点。谢谢你...

+0

我有一种感觉,你没有从你的IDE复制和粘贴这段代码。有几个拼写错误肯定无法编译。请向我们展示您的*实际*代码,以便我们不浪费时间与不相关的问题。 – 2011-02-23 06:34:35

回答

0

虽然你已经添加矩形的画布,画布没有机会正确测量和渲染它进入自己。所以你可能想明确地调用Measure并在画布上进行排列。如果它位于XAML中,由于它是主要视觉树的一部分,所以测量和排列将自动调用,您将看到结果。

can.children.add(rect); 
can.Measure(new Size(200,50)); 
can.Arrange(new Rect(0, 0, 200, 50));