Winforms 标记上的GMap.Net位置集中在不在上面的点上
我刚刚开始使用GMAP.Net,我正在设置一个自定义标记:Winforms 标记上的GMap.Net位置集中在不在上面的点上,winforms,.net-4.0,gmap.net,Winforms,.net 4.0,Gmap.net,我刚刚开始使用GMAP.Net,我正在设置一个自定义标记: marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), new Bitmap(Iconpath)); 其中Iconpath指向PNG类型的42*38像素图像 但是,图像显示在中心位置,并紧靠上面设置的点上方。我想知道如何设置它,使图像的中心位于位置上方 你知道怎么做吗 这是在winfor
marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), new Bitmap(Iconpath));
其中Iconpath指向PNG类型的42*38像素图像
但是,图像显示在中心位置,并紧靠上面设置的点上方。我想知道如何设置它,使图像的中心位于位置上方
你知道怎么做吗
这是在winforms.Net 4.0应用程序中实现的。GoogleMarker类似乎是为图钉式图像设计的,在图钉式图像中,您希望图钉尖端直接位于感兴趣的点之上。最好的方法是继承marker类并创建自己的类,在其中可以控制图像的放置。像这样:
class customImageMarker: GMapMarker
{
Bitmap Bitmap;
public customImageMarker(PointLatLng p, Bitmap Bitmap)
: base(p)
{
this.Bitmap = Bitmap;
Size = new System.Drawing.Size(Bitmap.Width, Bitmap.Height);
Offset = new Point(-Size.Width / 2, -Size.Height / 2);
}
public override void OnRender(Graphics g)
{
g.DrawImage(Bitmap, LocalPosition.X - Offset.X, LocalPosition.Y - Offset.Y, Size.Width, Size.Height);
}
}
现在只需给你的班级打电话:
marker = new customImageMarker(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[0])), new Bitmap(Iconpath));
您可以通过调整偏移量变量来控制图标的位置。我发现有一种简单的方法可以做到这一点:
Bitmap imgMarker = new Bitmap(Iconpath);
marker = new GMarkerGoogle(new PointLatLng(Convert.ToDouble(latlon[0]), Convert.ToDouble(latlon[1])), imgMarker);
marker.Offset = new Point(imgMarker.Width/2, imgMarker.Height / 2);
希望它能帮助别人 谢谢,我会在周日回来的时候试一试。google与GMap.Net类似吗?您好,我已经尝试过了,但出现了以下错误:无法将CustomImageMarker类型隐式转换为GMap.Net.WindowsForms.Markers.GMarkerGoogle您必须首先将标记定义为CustomImageMarker,然后才能像通常那样将其添加到图层中。不管怎样,看起来你找到了一个更简单的方法!我需要使偏移量中的x/y值为负值。但这对我来说是一种享受。