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!
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.