Добавляя к ответу Прабу Арумугама, Block
также может быть BlockUIContainer
с Image
, поэтому вам потребуется:
else if (block is BlockUIContainer)
{
var container = (BlockUIContainer)block;
if (container.Child is Image)
{
Image image = (Image)container.Child;
// ...
}
}
Я бы также предпочел синтаксис Linq для компактности, возможно, что-то вроде этого:
public static void ResizeRtbImages(RichTextBox rtb)
{
IEnumerable<Image> images = rtb.Document.Blocks.OfType<BlockUIContainer>()
.Select(c => c.Child).OfType<Image>()
.Union(rtb.Documents.Blocks.OfType<Paragraph>()
.SelectMany(pg => pg.Inlines.OfType<InlineUIContainer>())
.Select(inline => inline.Child).OfType<Image>()
);
foreach (var image in images)
{
// resize
}
}