提问人:Digão Dalpiaz 提问时间:10/28/2023 更新时间:10/31/2023 访问量:36
GMap.NET 中的深色模式贴图
Dark mode map in GMap.NET
问:
我正在使用 C# 和 WinForms 开发一个应用程序,并带有 GMap.NET 库。
有谁知道为地图设置黑暗模式的任何方法?
我目前正在使用 OpenStreet 地图:map.MapProvider = OpenStreetMapProvider.Instance
我查看了文档,但没有找到任何东西。使用谷歌地图时,可以在CSS中设置颜色参数,但是我没有找到直接在C#中定义CSS或主题的方法。
答:
1赞
Jimi
10/29/2023
#1
GMap.NET 提供三种预定义的渲染模式:
- 默认的,使用提供程序定义的颜色
- 反转模式,将颜色设置为负 =>
[GMapControl].NegativeMode
- 灰度模式,其中所有颜色都转换为灰度;白色就是白色=>
[GMapControl].GrayScaleMode
这些呈现模式使用 ColorMatrix 对象来定义每个通道的颜色量。
它还提供了指定自定义 ColorMatrix 和设置属性的方法。[GMapControl].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 的颜色:
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;
关于这些矩阵的用法,请参阅以下问题中的注释:
如何将用作按钮的禁用 PictureBox 灰显?
如何使用滑块控件来调整位图的亮度?
如何使用计时器将淡入淡出过渡效果应用于图像?
替换图像的颜色
评论