Источник изображения WPF, но ActualWidth и ActualHeight по-прежнему 0 [дублировать]

Вы можете использовать форматирование строки стиля C:

  "% d:% d: d"% (часы, минуты, секунды)  

См. здесь, особенно: https://web.archive.org/web/20120415173443/http://diveintopython3.ep.io/strings.html

3
задан Blachshma 19 February 2013 в 10:07
поделиться

1 ответ

Поскольку у элемента управления нет родительского контейнера, вам нужно вызвать Measure и Упорядочить , чтобы сделать правильный макет. Поскольку макет выполняется асинхронно (см. Примечания в Measure и Arrange ), вам также может потребоваться вызвать UpdateLayout , чтобы принудительно обновить макет .

public BitmapSource RenderToBitmap(UIElement element, Size size)
{
    element.Measure(size);
    element.Arrange(new Rect(size));
    element.UpdateLayout();

    var bitmap = new RenderTargetBitmap(
        (int)size.Width, (int)size.Height, 96, 96, PixelFormats.Default);

    bitmap.Render(element);
    return bitmap;
}

Если вы уже установили Width и Height элемента, вы можете использовать его для параметра размера:

var grid = new Grid
{
    Width = 200,
    Height = 200,
    Background = Brushes.Yellow
};

grid.Children.Add(
    new Ellipse
    {
        Width = 100,
        Height = 100,
        Fill = Brushes.Blue
    });

var bitmap = RenderElement(grid, new Size(grid.Width, grid.Height));
3
ответ дан Clemens 15 August 2018 в 15:40
поделиться
  • 1
    Эта схема не работает! По крайней мере, на моем Grid Control содержится несколько элементов внутри. Пока элемент не отображается на экране в растровом черном прямоугольнике. – Mixer 19 February 2013 в 12:17
  • 2
    Я добавил звонок UpdateLayout () и все, что работает – Mixer 19 February 2013 в 12:32
Другие вопросы по тегам:

Похожие вопросы: