Skip to main content
All docs
V25.1
  • ImageTileSource Class

    The class that should be implemented by classes that are tile sources for the ImageTileDataProvider.

    Namespace: DevExpress.Xpf.Map

    Assembly: DevExpress.Xpf.Map.v25.1.dll

    NuGet Package: DevExpress.Wpf.Map

    Declaration

    public abstract class ImageTileSource :
        MapDependencyObject,
        IImageTileSource,
        ITileItemSourceProvider

    The following members return ImageTileSource objects:

    Example

    This example shows how to use an ImageTileDataProvider instance to generate map tiles.

    Markup

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:DXMapInMemoryTileProvider"
            xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map" 
            x:Class="DXMapInMemoryTileProvider.MainWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <dxm:MapControl>
                <dxm:ImageLayer x:Name="imageLayer"/>
            </dxm:MapControl>
        </Grid>
    </Window>
    

    Code-Behind

    using DevExpress.Xpf.Map;
    using System;
    using System.Globalization;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    namespace DXMapInMemoryTileProvider {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();
                ImageTileDataProvider tileDataProvider = new ImageTileDataProvider();
                tileDataProvider.TileSource = new SimpleTileGenerator();
                this.imageLayer.DataProvider = tileDataProvider;
            }
        }
        public class SimpleTileGenerator : ImageTileSource {
            Random rnd = new Random();
            public override string Name => nameof(SimpleTileGenerator);
            public override ImageSource GetImageSource(long x, long y, int level, Size size) {
                DrawingVisual drawingVisual = new DrawingVisual();
                using (DrawingContext drawingContext = drawingVisual.RenderOpen()) {
                    FormattedText text = new FormattedText($"{x}:{y}:{level}", new CultureInfo("en-us"),
                                         FlowDirection.LeftToRight, new Typeface("Arial"), 14, Brushes.Black);
                    drawingContext.DrawRectangle(new SolidColorBrush(Color.FromArgb(128, (byte)rnd.Next(255),
                                                                            (byte)rnd.Next(255), (byte)rnd.Next(255))), null, 
                                                                            new Rect(new Point(), size));
                    drawingContext.DrawText(text, new Point(5, 5));
                    drawingContext.Close();
                }
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
                bmp.Render(drawingVisual);
                return bmp;
            }
            protected override MapDependencyObject CreateObject() {
                return new SimpleTileGenerator();
            }
        }
    }
    
    See Also