private void AddDataFrame(LayoutViewer lv) { // 这里是绘制专题图Frame的,如果需要给专题图增加外边框,一个建议是 // 将xbank、ybank设置大一些,多出来的部分,可作为外边框,然后增加外边框的 // 对象,等相关内容,方法类似于 LayoutViewer 的绘制 // LayoutViewer 在容器中定义了画布,新增加的外框,应该是画布中, // 强制绘制的一个多边形对象 // 新增外边框完成以后,需要至少改进格网的绘制方法,使数字能落在网格和 // DataFrame 外边框之间 DataFrame df = new DataFrame(lv.LayoutHost); ILayoutHost host = lv.LayoutHost; SizeF sizef = host.LayoutRuntime.Layout.Size; float xbank = 1; //cm float ybank = 1; //cm xbank = host.LayoutRuntime.Centimeter2Pixel(xbank); ybank = host.LayoutRuntime.Centimeter2Pixel(ybank); host.LayoutRuntime.Pixel2Layout(ref xbank, ref ybank); sizef = new SizeF(sizef.Width - 2 * xbank, sizef.Height - 2 * ybank); df.Size = sizef; df.Location = new PointF(xbank, ybank); df.Update(host); AttachVectorHost(df); host.LayoutRuntime.Layout.Elements.Add(df); //host.ActiveDataFrame = df; df.IsLocked = true; }
/// <summary> /// 新建专题图 /// </summary> /// <param name="argument">专题图标题:[厘米|像素]</param> public override void Execute(string argument) { LayoutViewer lv = new LayoutViewer(argument); lv.SetSession(_smartSession); _smartSession.SmartWindowManager.DisplayWindow(lv); AddDataFrame(lv); lv.LayoutHost.Render(); lv.LayoutHost.ToSuitedSize(); }