ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / PictureElement Class / SetSourcePath Method
String
Example Version

SetSourcePath Method
Regenerates the picture using the new file path to a picture on disk. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public void SetSourcePath( 
   string URI
)

Parameters

URI
String
Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Example
PictureElement_SetSourcePath
LayoutProjectItem layoutItem = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault(item => item.Name.Equals("Layout Name"));
await QueuedTask.Run(() => 
{
  Layout layout = layoutItem.GetLayout();
  PictureElement picElm = layout.FindElement("Rectangle") as PictureElement;

  picElm.SetSourcePath(@"C:\Some\New\Path\And\file_pic.png");
});
PictureElementExample
///This example references a PictureElement on a layout and changes the picture by setting a path to a file on disk using the

//Added references
using ArcGIS.Desktop.Core;
using ArcGIS.Desktop.Layouts;
using ArcGIS.Desktop.Framework.Threading.Tasks;

public class PictureElementExample
{
  public static Task<bool> UpdatePictureElementAsync(string LayoutName, string PictureName, string PicturePath)
  {
    //Reference a layoutitem in a project by name
    LayoutProjectItem layoutItem = Project.Current.GetItems<LayoutProjectItem>().FirstOrDefault(item => item.Name.Equals(LayoutName));
    if (layoutItem == null)
      return Task.FromResult(false);

    return QueuedTask.Run<bool>(() =>
    {
      //Reference and load the layout associated with the layout item
      Layout lyt = layoutItem.GetLayout();

      //Reference a picture element by name
      PictureElement picElm = lyt.FindElement(PictureName) as PictureElement;
      if (picElm == null)
        return false;

      //Change the path to a new source
      picElm.SetSourcePath(PicturePath);

      return true;
    });
  }
}
Update a picture element
//Update a picture element.

//Perform on the worker thread
QueuedTask.Run(() =>
{
  // Reference and load the layout associated with the layout item
  Layout layout = layoutItem.GetLayout();
  if (layout != null)
  {
    // Reference a picture element by name
    PictureElement picElm = layout.FindElement("MyPicture") as PictureElement;
    // Change the path to a new source
    if (picElm != null)
      picElm.SetSourcePath(@"D:\MyData\Pics\somePic.jpg");
  }
});
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also