2

Web アプリケーションの実行時にいくつかの WPF 要素のイメージを生成しようとしています。私は中程度の成功を収めましたが、WPF デスクトップ アプリケーションで同じコードを使用すると、正常に機能しているにもかかわらず、子要素が親を埋めるために伸びないという問題があります。コードは次のとおりです。

Canvas imageCanvas = new Canvas { Width = 1651, Height = 2551, Background = Brushes.White };

Canvas Test = new Canvas();

System.Windows.Shapes.Path Path = new System.Windows.Shapes.Path();
Path.Data = Geometry.Parse("M 0,0 H 287 V 287 H 0 Z");
Path.Stretch = Stretch.Fill;
Path.Stroke = Brushes.Black;
Path.StrokeThickness = 1;

Test.Width = 500;
Test.Height = 500;
Test.Children.Add(Path);

imageCanvas.Children.Add(Test);

Canvas.SetTop(Test, 10);
Canvas.SetLeft(Test, 10);

// Update layout
Size size = new Size(imageCanvas.Width, imageCanvas.Height);
imageCanvas.Measure(size);
imageCanvas.Arrange(new Rect(size));

RenderTargetBitmap bitmapRenderer = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
bitmapRenderer.Render(imageCanvas);

私が期待しているのは、親キャンバスを埋める正方形ですが、これは起こりません。実際、親のサイズは完全に無視されているようで、パスは常に同じです。サイズ変更を強制するためにできることはありますか? 一番上のキャンバスのメジャーとアレンジの呼び出しがこれを行うと思っていましたが、明らかにそうではありません。:(

4

1 に答える 1

1

これはキャンバスの制限です。これを克服する唯一の方法は、キャンバスを「ViewBox」またはそのバリエーションに入れることです。このリンクをチェックしてください http://msdn.microsoft.com/en-us/library /system.windows.controls.viewbox.aspx

于 2012-12-24T06:35:25.580 に答える