Используя приведенный ниже код, я рисую DrawingVisual
, а затем визуализирую его в Image
с помощью RenderTargetBitmap
. Последний Image
позже добавляется к Canvas
и отображается на экране.
Моя проблема связана с аргументами pixelWidth
и pixelHeight
, которые хочет RenderTargetBitmap
метод. Что я должен ему дать? Я заметил, что если я даю ему меньшие числа, части изображения не отображаются. На каком основании я должен их выбирать? Я дал ему 1000 в приведенном ниже коде.
public class ModelBeamSectionNamesInPlan : Image
{
private readonly VisualCollection _visuals;
public ModelBeamSectionNamesInPlan(BaseWorkspace space)
{
var typeface = Settings.BeamTextTypeface;
var cultureinfo = Settings.CultureInfo;
var flowdirection = Settings.FlowDirection;
var beamtextsize = Settings.BeamTextSize;
var beamtextcolor = Settings.InPlanBeamTextColor;
beamtextcolor.Freeze();
const double scale = 0.6;
var drawingVisual = new DrawingVisual();
using (var dc = drawingVisual.RenderOpen())
{
foreach (var beam in Building.ModelBeamsInTheElevation)
{
var text = beam.Section.Id;
var ft = new FormattedText(text, cultureinfo, flowdirection,
typeface, beamtextsize, beamtextcolor,
null, TextFormattingMode.Display)
{
TextAlignment = TextAlignment.Center
};
// Draw Text
dc.DrawText(ft, space.FlipYAxis(x, y));
}
}
var bmp = new RenderTargetBitmap(1000, 1000, 120, 96, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
Source = bmp;
}
}
drawingVisual.ContentBounds.Width
дает мне-Infinity
. - person Vahid   schedule 02.08.2014