C# 使用pan&;缩放及;注释

C# 使用pan&;缩放及;注释,c#,asp.net,openlayers,C#,Asp.net,Openlayers,我有一张500MB大小的大图片,我想在ASP.net中显示这张像地图一样的图片,带有缩放和平移功能。我找到了OpenLayers,但任何人都可以在ASP.net中使用任何框架/库来共享任何工作示例,以实现此功能。我建议制作一些较小的图像(Mipmapping)或/或将其切割成较小的部分。() 想想看,你看不到500mb数据的所有像素。只传输您实际看到的内容。我找到了一个答案,希望与您分享。这是密码 private static void Split(string fileName, int wi

我有一张500MB大小的大图片,我想在ASP.net中显示这张像地图一样的图片,带有缩放和平移功能。我找到了OpenLayers,但任何人都可以在ASP.net中使用任何框架/库来共享任何工作示例,以实现此功能。我建议制作一些较小的图像(Mipmapping)或/或将其切割成较小的部分。()


想想看,你看不到500mb数据的所有像素。只传输您实际看到的内容。

我找到了一个答案,希望与您分享。这是密码

private static void Split(string fileName, int width, int height)
{
    using (Bitmap source = new Bitmap(fileName))
    {
        bool perfectWidth = source.Width % width == 0;
        bool perfectHeight = source.Height % height == 0;

        int lastWidth = width;
        if (!perfectWidth)
        {
            lastWidth = source.Width - ((source.Width / width) * width);
        }

        int lastHeight = height;
        if (!perfectHeight)
        {
            lastHeight = source.Height - ((source.Height / height) * height);
        }

        int widthPartsCount = source.Width / width + (perfectWidth ? 0 : 1);
        int heightPartsCount = source.Height / height + (perfectHeight ? 0 : 1);

        for (int i = 0; i < widthPartsCount; i++)
            for (int j = 0; j < heightPartsCount; j++)
            {
                int tileWidth = i == widthPartsCount - 1 ? lastWidth : width;
                int tileHeight = j == heightPartsCount - 1 ? lastHeight : height;
                using (Bitmap tile = new Bitmap(tileWidth, tileHeight))
                {
                    using (Graphics g = Graphics.FromImage(tile))
                    {
                        g.DrawImage(source, new Rectangle(0, 0, tile.Width, tile.Height), new Rectangle(i * width, j * height, tile.Width, tile.Height), GraphicsUnit.Pixel);
                    }

                    tile.Save(string.Format("{0}-{1}.png", i + 1, j + 1), ImageFormat.Png);
                }
            }
    }
}
私有静态无效拆分(字符串文件名、整型宽度、整型高度)
{
使用(位图源=新位图(文件名))
{
bool perfectWidth=source.Width%Width==0;
bool perfectHeight=source.Height%Height==0;
int lastWidth=宽度;
如果(!perfectWidth)
{
lastWidth=source.Width-((source.Width/Width)*宽度);
}
int lastHeight=高度;
如果(!完美高度)
{
lastHeight=震源高度-((震源高度/高度)*高度);
}
int-widthPartsCount=source.Width/Width+(perfectWidth?0:1);
int heightPartsCount=源高度/高度+(完美高度?0:1);
对于(int i=0;i
如果我们进行切片,那么放大和缩小级别如何?如果用户希望看到完整的图像,则如何组合这些方法。把它做成一个旋转体。将1幅图像缩小为1024x768(顶级),然后将其切片为1024x768(二级)的4幅图像,以此类推。。缩放级别决定了您的屏幕上的级别。(这就是谷歌地图的工作原理)您只需要考虑应该向gui/客户端发送哪些图像。这里有一些例子:graphics.cs.cmu.edu/courses/15-463/2005\u fall/www/teachments/…见图像金字塔。正如@JeroenvanLangen所建议的,您需要某种“地图平铺系统”。要获得良好的概述,请查看[Bing地图平铺系统]()