对于第三方产品,我需要将ContentControl转换为Bitmap。我认为这没问题,因为ContentControl是可以在位图中呈现的UIElement。
但是,如果我绘制此位图,则看不到任何图像。
它似乎不起作用,因为我的应用程序资源中有contentControl,如果尝试加载它,则会找到它,但是所有属性均为null或处于异常状态。怎么了?
这是我的contentControl
<ContentControl x:Key="LocationMarker" Width="356" Height="524">
<Canvas Width="356" Height="524">
<Path Width="355.912" Height="524.355" Canvas.Left="0" Canvas.Top="-0.354675" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="...."/>
<Path Width="150" Height="200" Canvas.Left="100" Canvas.Top="50" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="..."/>
<Path Width="200" Height="170" Canvas.Left="78" Canvas.Top="300" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="..."/>
</Canvas>
那就是我试图得到它的方式:
var contentControl = Application.Current.Resources.MergedDictionaries.SelectMany(x => x.MergedDictionaries).FirstOrDefault(x => x.Source.OriginalString.Contains("ContentControls.xaml"))?["LocationMarker"] as ContentControl;
if (contentControl != null)
{
var renderTargetBitmap = new RenderTargetBitmap(41, 74, 96, 96, PixelFormats.Pbgra32);
renderTargetBitmap.Render(contentControl);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
var stream = new MemoryStream();
encoder.Save(stream);}
contentControl可能是错误的类型吗?通过资源获取它的方法是否错误?
每个提示都值得赞赏!
答案 0 :(得分:1)
这对我有用,请注意在原始代码中添加了function filteredArray(arr, elem) {
let newArr = [];
for (let i = 0; i < arr.length; i++){
for (let j = 0; j < arr[i].length; j++) {
if (arr[i][j] === elem) {
arr.splice(i--, 1);
newArr = [...arr]
}
}
}
return newArr;
}
console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 19));
和Measure
调用。
Arrange
代码从this answer开始采用。