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

In This Topic
    SetSourcePath Method
    In This Topic
    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
    )
    Public Sub SetSourcePath( _
       ByVal URI As String _
    ) 

    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