using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; namespace Demo.WindowsMobile { public partial class GPS : UserControl { MainForm Main; Pen penForSat = new Pen(Color.White, 3.0f); Brush brushForSatOk = new SolidBrush(Color.LimeGreen); Brush brushForSatNo = new SolidBrush(Color.Red); Font fSignal = new Font(FontFamily.GenericSansSerif, 6, FontStyle.Regular); Brush bSignal = new SolidBrush(Color.Blue); StringFormat sformat = new StringFormat(); public GPS(MainForm main) { InitializeComponent(); Main = main; sformat.LineAlignment = StringAlignment.Far; sformat.Alignment = StringAlignment.Center; } private void panelSignals_Paint(object sender, PaintEventArgs e) { lock(Main.Satellites) { if(Main.Satellites.Count > 0) { int cc = Width / Main.Satellites.Count; for(int i = 0; i < Main.Satellites.Count; i++) { int str = (int) (2.0 * (panelSignals.Height * Main.Satellites[i].SignalStrength)/100.0); if(Main.Satellites[i].InSolution) { e.Graphics.FillRectangle(brushForSatOk, new Rectangle(i*cc, panelSignals.Height - str, cc, str)); } else { e.Graphics.FillRectangle(brushForSatNo, new Rectangle(i*cc, panelSignals.Height - str, cc, str)); } e.Graphics.DrawRectangle(penForSat, new Rectangle(i*cc + (int) penForSat.Width/2, 0, cc - (int) penForSat.Width/2, panelSignals.Height)); e.Graphics.DrawString(Main.Satellites[i].SignalStrength + "dB", fSignal, bSignal, new Rectangle(i*cc, 0, cc, (int)(panelSignals.Height-fSignal.Size/2)), sformat); } } } } private void GPS_Resize(object sender, EventArgs e) { if(Parent != null) { status.Height = Parent.Height - 44*5; } } } }