private bool TryAddAviLayerToCanvas(ICanvas canvas, IAVILayer aviLyr, GeoDo.RSS.Core.DrawEngine.CoordEnvelope viewPrjEvp) { canvas.LayerContainer.Layers.Add(aviLyr); canvas.CurrentEnvelope = viewPrjEvp; canvas.Refresh(enumRefreshType.All); return(true); }
public void DisplayAvi(ISmartSession session, string wndName, string[] fnames, string templateName, string subIdentify, out string outputFname) { string satellite = null; string sensor = null; outputFname = GetOutputGxdFileName(fnames, subIdentify, out satellite, out sensor); bool isOk = false; FileIsSupportable(fnames); ILayoutTemplate temp = GetTemplateByArg(templateName); if (temp == null) { return; } ILayoutViewer viewer = new LayoutViewer(wndName); ApplyLayoutTemplate(viewer, ref temp); //在这里应用模板,初始化数据框的dataProvider TryApplyVars(temp, subIdentify, satellite, sensor); if (viewer.LayoutHost == null) { return; } ICanvas canvas = GetCanvasByTemplate(temp); if (canvas == null) { return; } Size dataSize = Size.Empty; GeoDo.RSS.Core.DrawEngine.CoordEnvelope viewPrjEvp = null; GeoDo.RSS.Core.DF.CoordEnvelope viewGeoEvp = null; float resolution = 0; int maxSize = GetBorderSizeByTemplate(viewer.LayoutHost.LayoutRuntime, temp); IAVILayer aviLyr = AVILayerBuilder.CreatAVILayer(fnames, canvas, maxSize, out dataSize, out viewPrjEvp, out viewGeoEvp, out resolution); if (aviLyr == null) { return; } aviLyr.OnTicked += new EventHandler(RefreshDataFrame); if (_isCustom) { TryApplyCustom(canvas, dataSize, subIdentify, viewPrjEvp, viewGeoEvp, resolution); } isOk = TryAddAviLayerToCanvas(canvas, aviLyr, viewPrjEvp); if (isOk) { session.SmartWindowManager.DisplayWindow(viewer); _host.ToSuitedSize(_host.LayoutRuntime.Layout); TryExportToGIF(session, subIdentify, outputFname); } }
public override void Execute() { ILayoutViewer viewer = _smartSession.SmartWindowManager.ActiveViewer as ILayoutViewer; if (viewer == null) { return; } IAVILayer aviLyr = GetAviLayer(viewer); if (aviLyr == null) { return; } _interval = aviLyr.Interval; ILayoutHost host = viewer.LayoutHost; if (host == null) { return; } ExportBitmaps(host); }
private void InitAviLayerInfos() { ILayout layout = _host.LayoutRuntime.Layout; if (layout == null) { return; } if (layout.Elements == null || layout.Elements.Count == 0) { return; } IDataFrame df = null; foreach (IElement ele in layout.Elements) { if (ele is IDataFrame) { df = ele as IDataFrame; break; } } if (df == null) { return; } if (df.Provider == null) { return; } ICanvas canvas = (df.Provider as IDataFrameDataProvider).Canvas; if (canvas == null) { return; } List <GeoDo.RSS.Core.DrawEngine.ILayer> layers = canvas.LayerContainer.Layers; if (layers == null || layers.Count == 0) { return; } IAVILayer aviLry = null; foreach (GeoDo.RSS.Core.DrawEngine.ILayer lry in layers) { if (lry is IAVILayer) { aviLry = lry as IAVILayer; } } if (aviLry == null) { return; } if (aviLry.BitmapCount == 0) { return; } _count = aviLry.BitmapCount; _interval = aviLry.Interval; _enabled = aviLry.IsRunning; return; }