

[GMap.NET](https://greatmaps.codeplex.com/)を利用してWindowsFormsアプリケーションを作成しています。マップはOpenStreetMap利用しており地図の描画は出来ています。

その描画された地図の上に更にタイルでイメージをオーバーレイしたいのですが方法がわかりません。タイルでない画像をオーバレイすることは可能なのですが、ズームしたときに粗くなってしまうのでタイルで描画したいです。


CC BY-SA 3.0
2015-01-19T10:26:39.493
4842
2015-07-18T15:49:56.017
2015-01-19T12:46:40.007
4978
7555
question
c# openstreetmap
GMap.NET で、地図の上にタイルで画像をオーバーレイ表示したい


`GMapOverlay`クラスを継承してOnRenderをオーバーライドすれば自由に描画できるようです。動作確認はしていませんがこんな感じだと思います。

[code]

    internal class CustomOverlay : GMapOverlay, IDisposable
    {
        private Bitmap _Image;
    
        internal CustomOverlay(Bitmap image)
        {
            _Image = image;
        }
    
        public override void OnRender(Graphics g)
        {
            using (var tb = new TextureBrush(_Image, WrapMode.Tile/*, TODO:イメージのサイズ指定*/))
            {
                g.FillRectangle(tb, Control.ClientRectangle); // TODO:位置指定
            }
         }
    
        // 以下IDisposableパターンの実装
        public new void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        private void Dispose(bool disposing)
        {
            base.Dispose();
            if (disposing)
            {
                using (_Image) { }
            }
            _Image = null;
        }
        void IDisposable.Dispose()
        {
            Dispose();
        }
        ~CustomOverlay()
        {
            Dispose(false);
        }
    }
    
[/code]


CC BY-SA 3.0
2015-01-19T11:31:49.870
4846
2015-01-19T11:31:49.870
5750
4842
answer