Is there a way to display CIMSymbol, or the raw JSON, as an image in a .NET ComboBox? Or is there a way to export that JSON to a PNG or other image file?
Hi Douglas,
The upcoming 2.7 release has a symbol picker control as part of the SDK. The symbol picker displays a 'preview' image of the symbol in a listbox (just like Pro does). Regarding your question: you have a CIMSymbol and want to either display a 'preview image' for that symbol or extract the JSON to display the JSON string? We have a sample here: arcgis-pro-sdk-community-samples/Map-Authoring/CustomSymbolPicker at master · Esri/arcgis-pro-sdk-community-samples (github.com) that might provide some inside, but if you can describe your desired workflow in more detail i can probably guide you in the right direction.
That sample helped a lot. SymbolStyleItem has the magic sauce I was looking for. My CIM symbol JSON is kept in a table. Walking the table, I now do this:
CF cf = new CF(); cf.key = row["key"].ToString(); cf.symbol = row["symbol"].ToString(); //Wrap the symbol JSON in CIMSymbolReference, so we can use that class to //deserialize it. cf.symbol = cf.symbol.Insert(0, "{\"type\": \"CIMSymbolReference\", \"symbol\": "); cf.symbol = cf.symbol.Insert(cf.symbol.Length, "}"); //Create the preview image used in the ComboBox SymbolStyleItem sSI = new SymbolStyleItem() { Symbol = CIMSymbolReference.FromJson(cf.symbol).Symbol, PatchWidth = 16, PatchHeight = 16 }; cf.preview = sSI.PreviewImage;
And the xaml for the ComboBox now looks like this:
<ComboBox x:Name="ContactsAndFaultsComboBox" IsTextSearchEnabled="True" TextSearch.TextPath="key" ItemsSource="{Binding Path=(ui:DataHelper.CFs)}" SelectedItem ="{Binding SelectedCF}" Margin="0,0,0,5" IsReadOnly="False" IsEditable="True" HorizontalAlignment="Left" Height="25" VerticalAlignment="Top" Width="200"> <ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding preview}" Margin="0,2,5,2" /> <TextBlock Text="{Binding key}" /> </StackPanel> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
Thanks, Wolf!
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.