using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using OSGeo.MapGuide.Viewer; namespace SampleExtension { public partial class PrePostRendering : MgControlView { private IMapViewer _viewer; private bool _bPreRender; private bool _bPostRender; public PrePostRendering(IMapViewer viewer) { InitializeComponent(); _viewer = viewer; _viewer.PreMapRender += new PaintEventHandler(OnPreMapRender); _viewer.PostMapRender += new PaintEventHandler(OnPostMapRender); this.Title = "Pre/Post Rendering"; } void OnPostMapRender(object sender, PaintEventArgs e) { if (_bPostRender) { string str = "Post-render text"; SizeF size = e.Graphics.MeasureString(str, SystemFonts.DialogFont); e.Graphics.DrawString(str, SystemFonts.DialogFont, Brushes.Green, new PointF(0, _viewer.ControlHeight - size.Height)); txtMessages.AppendText("Invoked post-map render handler" + Environment.NewLine); } } void OnPreMapRender(object sender, PaintEventArgs e) { txtMessages.Clear(); if (_bPreRender) { e.Graphics.DrawString("Pre-render text", SystemFonts.DialogFont, Brushes.Red, new PointF(0, 0)); txtMessages.AppendText("Invoked pre-map render handler" + Environment.NewLine); } } protected override void SubCleanup() { base.SubCleanup(); } private void chkEnablePreRender_CheckedChanged(object sender, EventArgs e) { _bPreRender = chkEnablePreRender.Checked; _viewer.RefreshMap(); //IMapViewer currently does not expose a control invalidation mechanism, so a RefreshMap() needs to be done } private void chkEnablePostRender_CheckedChanged(object sender, EventArgs e) { _bPostRender = chkEnablePostRender.Checked; _viewer.RefreshMap(); //IMapViewer currently does not expose a control invalidation mechanism, so a RefreshMap() needs to be done } } }