You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# WinForms的GMap.NET应用中设置地图暗黑模式?

为GMap.NET WinForms实现暗黑模式

GMap.NET本身没有内置的暗黑模式开关,你可以通过以下两种实用方式实现需求:

方法1:使用暗黑风格的地图瓦片源

直接替换地图提供者为支持暗黑主题的瓦片服务,这是最高效且视觉效果最好的方案,比如Carto Dark Matter这类成熟的暗黑瓦片源。

示例:自定义暗黑地图提供者

创建一个继承自GMapProvider的类,指定暗黑瓦片的URL模板:

public class DarkOpenStreetMapProvider : GMapProvider
{
    public static readonly DarkOpenStreetMapProvider Instance;

    static DarkOpenStreetMapProvider()
    {
        Instance = new DarkOpenStreetMapProvider();
    }

    private DarkOpenStreetMapProvider()
    {
        // 使用Carto Dark Matter瓦片服务
        var urlFormat = "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";
        // 设置子域名用于负载均衡
        Overlays.Add(new GMapOverlay(this)
        {
            TileUrls = new List<string> { urlFormat },
            Subdomains = new List<string> { "a", "b", "c" }
        });
        MaxZoom = 19;
        MinZoom = 1;
        RefererUrl = "https://carto.com/";
    }

    public override string Name => "DarkOpenStreetMap";
}

之后在代码中替换原有的地图提供者:

map.MapProvider = DarkOpenStreetMapProvider.Instance;

方法2:修改现有瓦片的颜色(性能较低)

如果必须沿用原OpenStreetMap瓦片,可以在瓦片加载完成后调整图像颜色实现暗黑效果。通过订阅TileLoadComplete事件处理每个瓦片:

map.TileLoadComplete += Map_TileLoadComplete;

private void Map_TileLoadComplete(object sender, GMap.NET.TileLoadCompleteEventArgs e)
{
    if (e.Tile.Image == null) return;

    // 将图像转换为暗黑风格(示例:反转RGB颜色)
    using (var bmp = new Bitmap(e.Tile.Image))
    {
        for (int y = 0; y < bmp.Height; y++)
        {
            for (int x = 0; x < bmp.Width; x++)
            {
                var color = bmp.GetPixel(x, y);
                // 保留Alpha通道,反转RGB值
                var invertedColor = Color.FromArgb(color.A, 255 - color.R, 255 - color.G, 255 - color.B);
                bmp.SetPixel(x, y, invertedColor);
            }
        }
        e.Tile.Image = new Bitmap(bmp);
    }
}

注意:这种方法会显著增加CPU负载,尤其是在缩放或移动地图时大量瓦片需要处理,仅推荐在无法使用暗黑瓦片源的场景下临时使用。

内容的提问来源于stack exchange,提问作者Digão Dalpiaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:06:10