在C#中任意旋转Gmap标记(位图)

问题描述 投票:0回答:1

我正在使用GMap在c#上使用google地图。我编写纬度和经度值,然后按加载按钮。然后代码在该点上放置一个标记(如箭头)。我想旋转该标记达到任何程度,例如Google Maps。我没有任何传感器,因此可以在文本框中输入度数,然后按旋转按钮。我怎样才能做到这一点?此代码显示了如何创建标记并将其放入地图。我对位图有点了解,但不太了解,对不起我的英语不好。我希望你能理解我想要的。

       `double lat = Convert.ToDouble(txtLat.Text);
        double lng = Convert.ToDouble(txtLong.Text);
        map.Position = new PointLatLng(lat, lng);
        //custom marker
        Bitmap bmpMarker = (Bitmap)Image.FromFile("img/arrow.png");
        PointLatLng point = new PointLatLng(lat, lng);

        GMap.NET.WindowsForms.GMapMarker marker = new GMarkerGoogle(point, bmpMarker);
        //1. Create a Overlay
        GMapOverlay markers = new GMapOverlay("markers");
        map.ZoomAndCenterMarkers("markers");
        //2. Add all available markers to that Overlay
        markers.Markers.Add(marker);
        //3. Cover map with Overlay
        map.Overlays.Add(markers);
        //RotateImage(bmpMarker, 180.0f);
        marker.ToolTipText = map.Position.ToString();`
c# bitmap gmap.net
1个回答
0
投票

由于不是参考类型,请尝试再次旋转设置位图图像:

GMap.NET.WindowsForms.GMapMarker marker = new GMarkerGoogle(point, RotateImg(bmpMarker,45));

建议旋转位图:

public Bitmap RotateImg(Bitmap bmpimage, float angle)
{
    int w = bmpimage.Width;
    int h = bmpimage.Height;
    PixelFormat pf;
    pf = bmpimage.PixelFormat;
    Bitmap tempImg = new Bitmap(w, h, pf);
    Graphics g = Graphics.FromImage(tempImg);
    g.DrawImageUnscaled(bmpimage, 1, 1);
    g.Dispose();
    GraphicsPath path = new GraphicsPath();
    path.AddRectangle(new RectangleF(0.0F, 0.0F, w, h));
    Matrix mtrx = new Matrix();

    mtrx.Rotate(angle);
    RectangleF rct = path.GetBounds(mtrx);
    Bitmap newImg = new Bitmap(Convert.ToInt32(rct.Width), Convert.ToInt32(rct.Height), pf);
    g = Graphics.FromImage(newImg);
    g.TranslateTransform(-rct.X, -rct.Y);
    g.RotateTransform(angle);
    g.InterpolationMode = InterpolationMode.HighQualityBilinear;
    g.DrawImageUnscaled(tempImg, 0, 0);
    g.Dispose();
    tempImg.Dispose();
    return newImg;
}
© www.soinside.com 2019 - 2024. All rights reserved.