我正在使用C#和WinForms开发一个应用程序,具有GMap.NET个库.

有没有人知道怎么把 map 上的dark mode设定下来?

我目前使用的是OpenStreet map : map.MapProvider = OpenStreetMapProvider.Instance

我看了文件,但什么也没找到.在使用Google map时,可以在css中设置 colored颜色 参数,但我没有找到直接用C#定义css或主题的方法.

推荐答案

GMap.NET提供了三种预定义的呈现模式:

  • 默认 colored颜色 ,使用提供程序定义的 colored颜色
  • 反转模式,将 colored颜色 设置为负色=>;[GMapControl].NegativeMode
  • 灰阶模式,其中所有 colored颜色 都转换为灰阶;白色为白色=>;[GMapControl].GrayScaleMode

这些渲染模式使用ColorMatrix对象来定义每个通道的 colored颜色 量.

它还提供了通过设置[GMapControl].ColorMatrix属性来指定自定义ColorMatrix的方法.

倒置矩阵~如下所示:

var matrixInverted = new ColorMatrix(new float[][] {
    new float[] { -1,  0,  0,  0,  0},
    new float[] {  0, -1,  0,  0,  0},
    new float[] {  0,  0, -1,  0,  0},
    new float[] {  0,  0,  0,  1,  0},
    new float[] {  1,  1,  1,  0,  1}
});

灰度矩阵是这样的(我的解释是):

var matrixGray = new ColorMatrix(new float[][]
{
    new float[] { .2126f, .2126f, .2126f, 0, 0 },
    new float[] { .7152f, .7152f, .7152f, 0, 0 },
    new float[] { .0722f, .0722f, .0722f, 0, 0 },
    new float[] { 0, 0, 0, 1, 0 },
    new float[] { 1, 1, 1, 0, 1 }
});

如果负片模式不是您想要的,您可以反转灰度ColorMatrix的 colored颜色 :

var matrixGrayInverted = new ColorMatrix(new float[][]
{
    new float[] { -.2126f, -.2126f, -.2126f, 0, 0 },
    new float[] { -.7152f, -.7152f, -.7152f, 0, 0 },
    new float[] { -.0722f, -.0722f, -.0722f, 0, 0 },
    new float[] { 0, 0, 0, 1, 0 },
    new float[] { 1, 1, 1, 0, 1 }
});

然后设置属性:

[GMapControl].ColorMatrix = matrixGrayInverted;

有关这些矩阵的用法,请参阅以下问题中的注释:

How can I gray-out a disabled PictureBox used as Button?
How to use a slider control to adjust the brightness of a Bitmap?
How to apply a fade transition effect to Images using a Timer?
Replacing colour of an Image

Csharp相关问答推荐

C++/C#HostFXR通过std::tuple传递参数

如果属性名为xyz,我需要使用System.Text.Json修改字符串类型的值""<>

将轮询与超时同步

UWP中的任务和界面

ASP.NET核心MVC SqlException:违反主键约束';PK_USER';.无法在对象';数据库中插入重复的密钥.用户';

C# CompareTo()和Compare()可以返回除-1和1以外的整数吗?

.NET并发词典交换值

当试图限制EF Select 的列时,如何避免重复代码?

.NET:从XPath定位原始XML文档中的 node

基于C#和ANGING的SignalR实时聊天流媒体应用

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

如何避免在.NET中将日志(log)写入相对路径

如何在同一成员上组合[JsonPropertyName]和[ObservableProperty]?

未在Windows上运行的Maui项目

如何将默认区域性更改为fr-FR而不是en-US?

在.NET Maui中,Flyoutindow/Hamburger菜单可以在shell 之外实现吗?

如何在Xamarin.Forms中检索PanGesture事件的位置?

C#定时器回调对象上下文?

无效的Zip文件-Zip存档

如何在C#中反序列化Java持续时间?