public ClassImage GetImage(string src) { if (db == null) { return(null); } string key = mapType + src; ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain(key); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = key; if (result.Count > 0) { MapClass map = result[0] as MapClass; try { img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } catch { } } else if (IsDownMap && !downlist.ContainsKey(src) && downlist.Count < 100)//多线程下载 { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); img1.DownUrl = src; bw.RunWorkerAsync(img1); } return(img1); }
protected void downCompleted(ClassImage image) { if (OnDownCompleted != null) { OnDownCompleted(image); } }
public ClassImage GetImage(string src) { ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain(src); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = src; if (result.Count > 0) { MapClass map = result[0] as MapClass; try { img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } catch { } } else if (IsDownMap) { img1.PicImage = downloadmap(src); } return(img1); }
private void drawImage(System.Drawing.Graphics g, MapTile tile, TileType tileType, ImageAttributes imageA) { ClassImage img = FindImage(baseNames[tileType] + tile.Name); string baseUrl = tile.Url; IDataHelper data = dataHelpers[tileType]; if (img == null) { img = data.GetImage(baseUrl, tile.Name); if (img == null) { img = new ClassImage(); } if (img.PicImage != null) { listImages.Add(img); } } img.IsDiscard = false; img.Left = tile.Left; img.Top = tile.Top; if (img.Left < -nPerWidth || img.Left > _width || img.Top > _height || img.Top < -nPerWidth) { return; } Rectangle rect = new Rectangle(img.Left, img.Top, nPerWidth, nPerWidth); if (img.PicImage != null && g != null) { g.DrawImage(img.PicImage, rect, 0, 0, nPerWidth, nPerWidth, GraphicsUnit.Pixel, imageA); } }
public void SetImage(ClassImage obj) { MapClass map = new MapClass(); MemoryStream stream = new MemoryStream(); map.PicUrl = obj.PicUrl; obj.PicImage.Save(stream, ImageFormat.Png); map.Stream = stream.ToArray(); stream.Close(); Delete(obj.PicUrl); db.Get(map); db.Commit(); }
void bw_DoWork(object sender, DoWorkEventArgs e) { ClassImage img1 = e.Argument as ClassImage; if (!downlist.ContainsKey(img1.DownUrl)) { downlist.Add(img1.DownUrl, img1); //增加下载地址 img1.PicImage = downloadmap(img1.DownUrl); downlist.Remove(img1.DownUrl); //移除下载地址 if (OnDownCompleted != null) { OnDownCompleted(img1); } } }
//private void drawImage(System.Drawing.Graphics g, MapTile tile, TileType tileType, ImageAttributes imageA) //{ // ClassImage img = FindImage(baseNames[tileType] + tile.Name); // string baseUrl = tile.Url; // IDataHelper data = dataHelpers[tileType]; // if (img == null) // { // img = data.GetImage(baseUrl, tile.Name); // if (img == null) // { // img = new ClassImage(); // } // if (img.PicImage != null) // listImages.Add(img); // } // img.IsDiscard = false; // img.Left = tile.Left; // img.Top = tile.Top; // if (img.Left < -nPerWidth || img.Left > _width || img.Top > _height || img.Top < -nPerWidth) // { // return; // } // Rectangle rect = new Rectangle(img.Left, img.Top, nPerWidth, nPerWidth); // if (img.PicImage != null && g != null) // g.DrawImage(img.PicImage, rect, 0, 0, nPerWidth, nPerWidth, GraphicsUnit.Pixel, imageA); //} private void drawImage(MapTile tile, TileType tileType, ImageAttributes imageA) { ClassImage img = FindImage(baseNames[tileType] + tile.Name); string baseUrl = tile.Url; IDataHelper data = dataHelpers[tileType]; if (img == null) { img = data.GetImages(baseUrl, tile.Name); } img.IsDiscard = false; img.Left = tile.Left; img.Top = tile.Top; if (img.Left < -nPerWidth || img.Left > _width || img.Top > _height || img.Top < -nPerWidth) { return; } }
private void downloadcomplete(MapClass obj) { if (gispainter != null) { ClassImage img = FindImage(obj.PicUrl); if (img != null) { if (obj.Stream != null) { img.PicImage = Bitmap.FromStream(new MemoryStream(obj.Stream)); //DataHelper.GetImage(obj.PicUrl).PicImage; } if (Invalidate != null) { Invalidate(new Rectangle(img.Left, img.Top, 200, 200), true); } } } }
public List <ClassImage> GetMapList(int width, int height, int nScaleLevel, double fLongitude, double fLatitude) { longgitude = fLongitude; latitude = fLatitude; int[] iw = new int[] { Convert.ToInt32(fLongitude * 100000), Convert.ToInt32(fLatitude * 100000) }; double sw = Math.Pow(2, scaleLevel) * 256 / imgSize; int[] gw = toMapId(iw, scaleLevel); int hw = imgSize; int jw = gw[0] - Convert.ToInt32(Math.Ceiling((width / 2d - gw[2]) / hw)); int kw = gw[1] - Convert.ToInt32(Math.Ceiling((height / 2d - gw[3]) / hw)); int lw = gw[0] + Convert.ToInt32(Math.Ceiling((width / 2d + gw[2]) / hw) - 1); int zw = gw[1] + Convert.ToInt32(Math.Ceiling((height / 2d + gw[3]) / hw) - 1); double[] cw = new double[] { -iw[0] / sw, iw[1] / sw }; List <ClassImage> retlist = new List <ClassImage>(); for (int mw = jw; mw <= lw; mw++) { for (int _w = kw; _w <= zw; _w++) { int nPicLeft = (mw * imgSize) + Convert.ToInt32(cw[0]) + width / 2; int nPicTop = (-1 - _w) * imgSize + Convert.ToInt32(cw[1]) + height / 2; string strPic = getMapImagesUrl(mw, _w, scaleLevel); ClassImage image = dataHelper.GetImage(strPic); image.PicWidth = nPerWidth; image.Left = nPicLeft; image.Top = nPicTop; if (image.PicImage == null) { } retlist.Add(image); } } return(retlist); }
public ClassImage GetImageBak(string src) { ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain("_" + src); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = src; if (result.Count > 0) { MapClass map = result[0] as MapClass; img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } else { } return(img1); }
public override void SetImage(ClassImage image) { dataHelper.SetImage(image); }
protected void downCompleted(ClassImage image) { if (OnDownCompleted != null) { OnDownCompleted(image); } }
public void Paint2(Graphics g, int width, int height, int nScaleLevel, double fLongitude, double fLatitude, ImageAttributes imageAttributes) { longgitude = fLongitude; latitude = fLatitude; scaleLevel = nScaleLevel; //if (nScaleLevel == 0) //{ // longgitude -= Convert.ToDecimal(0.12288); // latitude += Convert.ToDecimal(0.1496); //} int[] iw = new int[] { Convert.ToInt32(fLongitude * 100000), Convert.ToInt32(fLatitude * 100000) }; double sw = Math.Pow(2, scaleLevel) * 256 / imgSize; int[] gw = toMapId(iw, scaleLevel); int hw = imgSize; int jw = gw[0] - Convert.ToInt32(Math.Ceiling((width / 2d - gw[2]) / hw)); int kw = gw[1] - Convert.ToInt32(Math.Ceiling((height / 2d - gw[3]) / hw)); int lw = gw[0] + Convert.ToInt32(Math.Ceiling((width / 2d + gw[2]) / hw) - 1); int zw = gw[1] + Convert.ToInt32(Math.Ceiling((height / 2d + gw[3]) / hw) - 1); double[] cw = new double[] { -iw[0] / sw, iw[1] / sw }; if (listImages.Count > 50) { listImages.Clear(); GC.Collect(); } foreach (ClassImage img in listImages) { img.IsDiscard = true; } for (int mw = jw; mw <= lw; mw++) { for (int _w = kw; _w <= zw; _w++) { int nPicLeft = (mw * imgSize) + Convert.ToInt32(cw[0]) + width / 2; int nPicTop = (-1 - _w) * imgSize + Convert.ToInt32(cw[1]) + height / 2; string strPic = getMapImagesUrl(mw, _w, scaleLevel); //������ʾ��Χ�� //if (nPicLeft < -nPerWidth || nPicLeft > width || nPicTop > height || nPicTop < -nPerWidth) { // continue; //} ClassImage img = FindImage(strPic); if (img == null) { img = dataHelper.GetImage(strPic); if (img == null) { img = new ClassImage(); img.PicUrl = strPic; } listImages.Add(img); } img.IsDiscard = false; img.Left = nPicLeft; img.Top = nPicTop; Rectangle rect = new Rectangle(img.Left, img.Top, 1000, 1000); if (img.PicImage != null && g != null) //g.DrawImage(img.PicImage, img.Left, img.Top, nPerWidth, nPerWidth); g.DrawImage(img.PicImage, rect, 0, 0, 1000, 1000, GraphicsUnit.Pixel, imageAttributes); //// g.DrawRectangle(Pens.Red, img.Left, img.Top, nPerWidth, nPerWidth); string s = img.PicUrl;//ͼƬ�� //// g.DrawString(s, new Font("����", 10), Brushes.Red, new Rectangle(img.Left, img.Top, 200, 200)); } } double f1 = 0.00582; double f2 = 0.00205; //d1 = d1 - Convert.ToDecimal(f1); //d2 = d2 - Convert.ToDecimal(f2); double loggitude1 = longgitude - f1; double latitude1 = latitude - f2; //string s = string.Format("��{0}��γ{1}", loggitude1, latitude1); //g.DrawString(s, new Font("����", 10), Brushes.Red, 0, 0); }
public ClassImage GetImages(string src) { if (db == null) return null; string key = mapType + src; ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain(key); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = key; if (result.Count > 0) { MapClass map = result[0] as MapClass; try { img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } catch { } } else if (IsDownMap && !downlist.ContainsKey(src) && downlist.Count < 10) {//���߳����� BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); img1.DownUrl = src; bw.RunWorkerAsync(img1); } else if (IsDownMap && !downlist.ContainsKey(src) && downlist.Count >= 10) { while (downlist.Count >= 10) { } BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork); img1.DownUrl = src; bw.RunWorkerAsync(img1); } return img1; }
public override List <ClassImage> GetMapList(int width, int height, int nScaleLevel, double fLongitude, double fLatitude) { longgitude = fLongitude; latitude = fLatitude; scaleLevel = nScaleLevel; int nRows = (int)Math.Ceiling((double)height / nPerWidth / 2); int nCols = (int)Math.Ceiling((double)width / nPerWidth / 2); int nCenterX = width / 2; int nCenterY = height / 2; int offsetX = nCenterX - (int)Math.Round(((fLongitude * 100000) % (d2H[nScaleLevel] * 100000)) * nPerWidth / (d2H[nScaleLevel] * 100000)); int offsetY = 0; if (fLatitude >= 0) { offsetY = nCenterY - nPerWidth + (int)Math.Round(((fLatitude * 100000) % (qxl3[nScaleLevel] * 100000)) * nPerWidth / (qxl3[nScaleLevel] * 100000)); } else { offsetY = nCenterY + (int)Math.Round(((fLatitude * 100000) % (qxl3[nScaleLevel] * 100000)) * nPerWidth / (qxl3[nScaleLevel] * 100000)); } if (nScaleLevel == 11) { offsetY -= 150; } else if (nScaleLevel == 8) { offsetY += 75; } List <ClassImage> retlist = new List <ClassImage>(); for (int nRow = nRows; nRow >= -(nRows); nRow--) { for (int nCol = -(nCols); nCol <= nCols; nCol++) { string strPic = strLevel[nScaleLevel] + "/"; string strPicPath = imageBasePath + strLevel[nScaleLevel] + "\\"; int L04m = (int)(Math.Floor((fLongitude + d2H[nScaleLevel] / 100000) / d2H[nScaleLevel]) + nCol); int j93co = (int)(Math.Floor((fLatitude + qxl3[nScaleLevel] / 100000) / qxl3[nScaleLevel]) + nRow); int U63K2 = (int)(360 / d2H[nScaleLevel]); L04m = L04m % U63K2; if (L04m >= (U63K2 / 2)) { L04m -= U63K2; } if (L04m < (-U63K2 / 2)) { L04m += U63K2; } int X1 = (int)(Math.Floor((double)(L04m / g6Y[nScaleLevel]))); int Y1 = (int)(Math.Floor((double)(j93co / g6Y[nScaleLevel]))); { if (X1 < 0) { X1 += 1; } if (Y1 < 0) { Y1 += 1; } } int X2 = (L04m) - X1 * g6Y[nScaleLevel]; int Y2 = (j93co) - Y1 * g6Y[nScaleLevel]; strPic += X1 + "_" + Y1 + "/"; strPic += X2 + "_" + Y2 + ".png"; strPicPath += X1 + "_" + Y1 + "\\"; strPicPath += X2 + "_" + Y2 + ".png"; int nPicLeft = nCol * nPerWidth + offsetX; int nPicTop = -nRow * nPerWidth + offsetY; ClassImage image = dataHelper.GetImage(strPic); image.PicWidth = nPerWidth; image.Left = nPicLeft; image.Top = nPicTop; if (image.PicImage == null) { } retlist.Add(image); } } return(retlist); }
void dataHelper_OnDownCompleted(ClassImage mapclass) { base.downCompleted(mapclass); }
public void SetImage(ClassImage image) { dataHelper.SetImage(image); }
public void Paint(Graphics g, int width, int height, int nScaleLevel, double fLongitude, double fLatitude, ImageAttributes imageAttributes) { double longgitude = fLongitude; double latitude = fLatitude; int scaleLevel = nScaleLevel; //switch (nScaleLevel) //{ // case 10: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude-=Convert.ToDecimal(1.445394); // fLongitude += Convert.ToDecimal(1.012394); // break; // case 9: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(1.440394)/2 ; // fLongitude += Convert.ToDecimal(1.022394)/2; // break; // case 8: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(1.3200394)/4; // fLongitude += Convert.ToDecimal(1.10739394)/4; // break; // case 7: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(1.300394)/8; // fLongitude += Convert.ToDecimal(0.802394)/8; // break; // case 6: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(1.265394)/16; // fLongitude += Convert.ToDecimal(0.8792394)/16; // break; // case 5: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(0.900194)/32; // fLongitude += Convert.ToDecimal(1.159994)/32; // break; // case 4: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(0.300194) / 64; // fLongitude += Convert.ToDecimal(1.359994) / 64; // break; // case 3: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= -Convert.ToDecimal(1.036194) / 128; // fLongitude += Convert.ToDecimal(1.692099) / 128; // break; // case 2: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= -Convert.ToDecimal(3.4690194) / 256; // fLongitude += Convert.ToDecimal(2.61009) / 256; // break; // case 1: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= -Convert.ToDecimal(5.37394) / 512; // fLongitude += Convert.ToDecimal(4.47394) / 512; // break; // case 0: // latitude -= Convert.ToDecimal(1.585394); // longgitude += Convert.ToDecimal(1.385394); // fLatitude -= Convert.ToDecimal(1.440394) / 1024; // fLongitude += Convert.ToDecimal(1.022394) / 1024; // break; //} int[] iw = new int[] { Convert.ToInt32(fLongitude * 100000), Convert.ToInt32(fLatitude * 100000) }; double sw = Math.Pow(2, scaleLevel) * 256 / 200; int[] gw = toMapId(iw, scaleLevel); int hw = 200; int jw = gw[0] - Convert.ToInt32(Math.Ceiling((width / 2d - gw[2]) / hw)); int kw = gw[1] - Convert.ToInt32(Math.Ceiling((height / 2d - gw[3]) / hw)); int lw = gw[0] + Convert.ToInt32(Math.Ceiling((width / 2d + gw[2]) / hw) - 1); int zw = gw[1] + Convert.ToInt32(Math.Ceiling((height / 2d + gw[3]) / hw) - 1); double[] cw = new double[] { -iw[0] / sw, iw[1] / sw }; for (int mw = jw - 30; mw <= lw+10; mw++) { for (int _w = kw - 30; _w <= zw+10; _w++) { int nPicLeft = (mw * 200) + Convert.ToInt32(cw[0]) + width / 2; int nPicTop = (-1 - _w) * 200 + Convert.ToInt32(cw[1]) + height / 2; string strPic = getMapImagesUrl(mw, _w, scaleLevel); //������ʾ��Χ�� //if (nPicLeft < -nPerWidth || nPicLeft > width || nPicTop > height || nPicTop < -nPerWidth) { // continue; //} ClassImage img = FindImage(strPic); if (img == null) { img = mapview.DataHelper.GetImage(strPic); if (img == null) { img = new ClassImage(); img.PicUrl = strPic; } listImages.Add(img); } img.IsDiscard = false; img.Left = nPicLeft; img.Top = nPicTop; Rectangle rect = new Rectangle(img.Left, img.Top, 1000, 1000); if (img.PicImage != null && g != null) //g.DrawImage(img.PicImage, img.Left, img.Top, nPerWidth, nPerWidth); g.DrawImage(img.PicImage, rect, 0, 0, 1000, 1000, GraphicsUnit.Pixel, imageAttributes); } } double f1 = 0.00582; double f2 = 0.00205; //d1 = d1 - Convert.ToDecimal(f1); //d2 = d2 - Convert.ToDecimal(f2); double loggitude1 = longgitude - Convert.ToDouble(f1); double latitude1 = latitude - Convert.ToDouble(f2); //string s = string.Format("��{0}��γ{1}", loggitude1, latitude1); //g.DrawString(s, new Font("����", 10), Brushes.Red, 0, 0); }
void dataHelper_OnDownCompleted(ClassImage mapclass) { base.downCompleted(mapclass); }
public void Paint2(Graphics g, int width, int height, int nScaleLevel, double fLongitude, double fLatitude, ImageAttributes imageAttributes) { longgitude = fLongitude; latitude = fLatitude; scaleLevel = nScaleLevel; //if (nScaleLevel == 0) //{ // longgitude -= Convert.ToDecimal(0.12288); // latitude += Convert.ToDecimal(0.1496); //} int[] iw = new int[] { Convert.ToInt32(fLongitude * 100000), Convert.ToInt32(fLatitude * 100000) }; double sw = Math.Pow(2, scaleLevel) * 256 / imgSize; int[] gw = toMapId(iw, scaleLevel); int hw = imgSize; int jw = gw[0] - Convert.ToInt32(Math.Ceiling((width / 2d - gw[2]) / hw)); int kw = gw[1] - Convert.ToInt32(Math.Ceiling((height / 2d - gw[3]) / hw)); int lw = gw[0] + Convert.ToInt32(Math.Ceiling((width / 2d + gw[2]) / hw) - 1); int zw = gw[1] + Convert.ToInt32(Math.Ceiling((height / 2d + gw[3]) / hw) - 1); double[] cw = new double[] { -iw[0] / sw, iw[1] / sw }; if (listImages.Count > 50) { listImages.Clear(); GC.Collect(); } foreach (ClassImage img in listImages) { img.IsDiscard = true; } for (int mw = jw; mw <= lw; mw++) { for (int _w = kw; _w <= zw; _w++) { int nPicLeft = (mw * imgSize) + Convert.ToInt32(cw[0]) + width / 2; int nPicTop = (-1 - _w) * imgSize + Convert.ToInt32(cw[1]) + height / 2; string strPic = getMapImagesUrl(mw, _w, scaleLevel); //不在显示范围内 //if (nPicLeft < -nPerWidth || nPicLeft > width || nPicTop > height || nPicTop < -nPerWidth) { // continue; //} ClassImage img = FindImage(strPic); if (img == null) { img = dataHelper.GetImage(strPic); if (img == null) { img = new ClassImage(); img.PicUrl = strPic; } listImages.Add(img); } img.IsDiscard = false; img.Left = nPicLeft; img.Top = nPicTop; Rectangle rect = new Rectangle(img.Left, img.Top, 1000, 1000); if (img.PicImage != null && g != null) { //g.DrawImage(img.PicImage, img.Left, img.Top, nPerWidth, nPerWidth); g.DrawImage(img.PicImage, rect, 0, 0, 1000, 1000, GraphicsUnit.Pixel, imageAttributes); } //// g.DrawRectangle(Pens.Red, img.Left, img.Top, nPerWidth, nPerWidth); string s = img.PicUrl;//图片名 //// g.DrawString(s, new Font("宋体", 10), Brushes.Red, new Rectangle(img.Left, img.Top, 200, 200)); } } double f1 = 0.00582; double f2 = 0.00205; //d1 = d1 - Convert.ToDecimal(f1); //d2 = d2 - Convert.ToDecimal(f2); double loggitude1 = longgitude - f1; double latitude1 = latitude - f2; //string s = string.Format("经{0}:纬{1}", loggitude1, latitude1); //g.DrawString(s, new Font("宋体", 10), Brushes.Red, 0, 0); }
void mapview_OnDownCompleted(ClassImage mapclass) { if (mapclass.PicImage != null) tlVectorControl1.DrawArea.InvadateRect(mapclass.Bounds); }
public void SetImage(ClassImage image) { dataHelper.SetImage(image); }
public abstract void SetImage(ClassImage image);
public ClassImage GetImageBak(string src) { ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain("_" + src); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = src; if (result.Count > 0) { MapClass map = result[0] as MapClass; img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } else { } return img1; }
public override void SetImage(ClassImage image) { dataHelper.SetImage(image); }
public ClassImage GetImage(string src) { ClassImage img1 = null; IQuery query = db.Query(); query.Constrain(typeof(MapClass)); query.Descend("_picUrl").Constrain(src); IObjectSet result = query.Execute(); img1 = new ClassImage(); img1.PicUrl = src; if (result.Count > 0) { MapClass map = result[0] as MapClass; try { img1.PicImage = Bitmap.FromStream(new MemoryStream(map.Stream)); } catch { } } else if (IsDownMap) { img1.PicImage = downloadmap(src); } return img1; }
private void drawImage(System.Drawing.Graphics g, MapTile tile, TileType tileType, ImageAttributes imageA) { ClassImage img = FindImage(baseNames[tileType] + tile.Name); string baseUrl = tile.Url; IDataHelper data = dataHelpers[tileType]; if (img == null) { img = data.GetImage(baseUrl, tile.Name); if (img == null) { img = new ClassImage(); } if (img.PicImage != null) listImages.Add(img); } img.IsDiscard = false; img.Left = tile.Left; img.Top = tile.Top; if (img.Left < -nPerWidth || img.Left > _width || img.Top > _height || img.Top < -nPerWidth) { return; } Rectangle rect = new Rectangle(img.Left, img.Top, nPerWidth, nPerWidth); if (img.PicImage != null && g != null) g.DrawImage(img.PicImage, rect, 0, 0, nPerWidth, nPerWidth, GraphicsUnit.Pixel, imageA); }
public abstract void SetImage(ClassImage image);
public void SetImage(ClassImage obj) { MapClass map = new MapClass(); MemoryStream stream = new MemoryStream(); map.PicUrl = obj.PicUrl; obj.PicImage.Save(stream, ImageFormat.Png); map.Stream = stream.ToArray(); stream.Close(); Delete(obj.PicUrl); db.Get(map); db.Commit(); }
public override void Paint(Graphics g, int width, int height, int nScaleLevel, double fLongitude, double fLatitude) { longgitude = fLongitude; latitude = fLatitude; scaleLevel = nScaleLevel; ImageAttributes imageA = new ImageAttributes(); int nRows = (int)(Math.Ceiling((double)height / (double)nPerWidth / 2.0d)); int nCols = (int)Math.Ceiling((double)width / (double)nPerWidth / 2.0d); if (listImages.Count > 50) { listImages.Clear(); GC.Collect(); } foreach (ClassImage img in listImages) { img.IsDiscard = true; } int nCenterX = width / 2; int nCenterY = height / 2; //this.$i024=qxl3[this.nScaleLevel]; int offsetX = nCenterX - (int)Math.Round(((fLongitude * 100000) % (d2H[nScaleLevel] * 100000)) * nPerWidth / (d2H[nScaleLevel] * 100000)); int offsetY = 0; if (fLatitude >= 0) { offsetY = nCenterY - nPerWidth + (int)Math.Round(((fLatitude * 100000) % (qxl3[nScaleLevel] * 100000)) * nPerWidth / (qxl3[nScaleLevel] * 100000)); } else { offsetY = nCenterY + (int)Math.Round(((fLatitude * 100000) % (qxl3[nScaleLevel] * 100000)) * nPerWidth / (qxl3[nScaleLevel] * 100000)); } //if (nOffset == 0) { if (nScaleLevel == 11) { offsetY -= 150; } else if (nScaleLevel == 8) { offsetY += 75; } } //string strImgsvrUrl = "http://mappng.baidu.com/maplite/mapbank/baidu/"; //System.Net.WebClient webClient = new System.Net.WebClient(); for (int nRow = nRows; nRow >= -(nRows + 1); nRow--) { for (int nCol = -(nCols); nCol <= nCols; nCol++) { string strPic = strLevel[nScaleLevel] + "/"; string strPicPath = imageBasePath + strLevel[nScaleLevel] + "\\"; int L04m = (int)(Math.Floor((double)((fLongitude + d2H[nScaleLevel] / 100000) / d2H[nScaleLevel])) + nCol); int j93co = (int)(Math.Floor((double)((fLatitude + qxl3[nScaleLevel] / 100000) / qxl3[nScaleLevel])) + nRow); int U63K2 = (int)(360 / d2H[nScaleLevel]); L04m = L04m % U63K2; if (L04m >= (U63K2 / 2)) { L04m -= U63K2; } if (L04m < (-U63K2 / 2)) { L04m += U63K2; } int X1 = (int)(Math.Floor((double)(L04m / g6Y[nScaleLevel]))); int Y1 = (int)(Math.Floor((double)(j93co / g6Y[nScaleLevel]))); { if (X1 < 0) { X1 += 1; } if (Y1 < 0) { Y1 += 1; } } int X2 = (L04m) - X1 * g6Y[nScaleLevel]; int Y2 = (j93co) - Y1 * g6Y[nScaleLevel]; strPic += X1 + "_" + Y1 + "/"; strPic += X2 + "_" + Y2 + ".png"; strPicPath += X1 + "_" + Y1 + "\\"; strPicPath += X2 + "_" + Y2 + ".png"; int nPicLeft = nCol * nPerWidth + offsetX; int nPicTop = -nRow * nPerWidth + offsetY; //不在显示范围内 //if (nPicLeft < -nPerWidth || nPicLeft > width || nPicTop > height || nPicTop < -nPerWidth) { // continue; //} ClassImage img = FindImage(strPic); if (img == null) { img = dataHelper.GetImage(strPic); if (listImages.Count < 50) { listImages.Add(img); } } img.IsDiscard = false; img.Left = nPicLeft; img.Top = nPicTop; //img.Longitude = fLongitude - (nCenterX - nPicLeft) * d2H[nScaleLevel] / nPerWidth; //img.Latitude = fLatitude + (nCenterY - nPicTop) * qxl3[nScaleLevel] / nPerWidth; Rectangle rect = new Rectangle(img.Left, img.Top, nPerWidth, nPerWidth); if (img.PicImage != null && g != null) { g.DrawImage(img.PicImage, img.Left, img.Top, nPerWidth, nPerWidth); } //g.DrawImage(img.PicImage, rect, img.Left, img.Top, nPerWidth, nPerWidth, GraphicsUnit.Pixel, imagAttributes); if (ShowMapInfo) { g.DrawRectangle(Pens.Red, img.Left, img.Top, nPerWidth, nPerWidth); //string s = string.Format("x{0}:y{1}", img.Left, img.Top);//图片左上角坐标 //string s = "(" + img.Longitude.ToString(nfInfo) + "," + img.Latitude.ToString(nfInfo) + ")";//经纬度 string s = img.PicUrl;//图片名 g.DrawString(s, new Font("宋体", 10), Brushes.Red, new Rectangle(img.Left, img.Top, 300, 300)); } } } // string s = string.Format("{0}行{1}列", nRows, nCols); // string s = string.Format("经{0}:纬{1}", longgitude, latitude);//显示中心点经纬度 // // g.DrawString(s, new Font("宋体", 10), Brushes.Red, 20, 40); }