gpt4 book ai didi

c# - 如何从 MapXtreme 样式制作位图

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:03 25 4
gpt4 key购买 nike

我已经在 MapXtreme 论坛上发布了这个问题,但是因为从来没有人在那里回答问题,我希望这里的人对这个产品有一些经验(mapxtreme 是由制作 MapInfo 的人制作的 GIS SDK)

我正在开发 MapXtreme Desktop 应用程序,我们需要要素样式的位图

我尝试了两种方法,但我得到的只是一个带有深色 X 的灰色位图。

这是我用过的代码,两种方式都在代码中,但有一种被注释掉了:

    public static Bitmap GetStyleBitmap(Style style)
{
var bm = new Bitmap(16, 16, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
var rect = new System.Drawing.Rectangle(0, 0, 16, 16);
var ss = new StyleSample();
ss.Bounds = rect;
if (style is CompositeStyle)
{
ss.ApplyAreaStyle(((CompositeStyle)style).AreaStyle);
ss.ApplyLineStyle(((CompositeStyle)style).LineStyle);
}
if (style is AreaStyle)
{
ss.ApplyAreaStyle((AreaStyle)style);
}
if (style is SimpleLineStyle)
{
ss.ApplyLineStyle((SimpleLineStyle)style);
}

//using MapExport
var me = new MapExport(ss.Map);
var image = me.Export();
return new Bitmap(image);

//using StyleSample.DrawToBitmap
//ss.DrawToBitmap(bm, rect);
//return bm;
}

TIA

最佳答案

在等待答案 - 并尝试了无数其他方法 - 都无济于事之后,我决定全部“手工”完成,即我只是查看样式对象获取它的颜色并绘制一个适合的位图图层类型(线或多边形)。

它不会处理所有情况,也不处理线条样式或内部颜色,但它现在可以满足我的目的。

这是执行此操作的代码。

    public static Bitmap GetStyleBitmap(FeatureLayer fl)
{
Feature f = GetFirstFeature(fl);
if (f == null) return null;

var style = f.Style;
Color c;
var bm = new Bitmap(16, 16, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
PointF[] poly = new PointF[]
{
new PointF(2,5),
new PointF(5,2),
new PointF(14,7),
new PointF(14,14),
new PointF(2,14),
new PointF(2,4)
};

SimpleLineStyle line = null;
if (style is CompositeStyle)
line = ((CompositeStyle)style).AreaStyle.Border as SimpleLineStyle;
if (style is AreaStyle)
line = ((AreaStyle)style).Border as SimpleLineStyle;

if (line != null)
{
c = line.Color;

using (var gr = Graphics.FromImage(bm))
{
gr.DrawPolygon(new Pen(c, 2), poly);
}
return bm;
}

line = style as SimpleLineStyle;

if (line != null)
{
c = line.Color;

using (var gr = Graphics.FromImage(bm))
{
gr.DrawLine(new Pen(c, 2), new PointF(2,2), new PointF(14,14));
}
}
return bm;
}

关于c# - 如何从 MapXtreme 样式制作位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com