What would be the best way to simulate Radar in C#?

后端 未结 4 1860
北海茫月
北海茫月 2020-12-20 00:33

I have a Picture box inside a Groupbox in my form with the Picture of a radar set as the background picture. My intention is to dynamically load tiny Jpeg images within the

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-20 01:17

    As for actual example:

      // Among others
      using System.Collections.Generic;
      using System.Drawing;
      using System.IO;
    
      class TinyPic {
        public readonly Image Picture;
        public readonly Rectangle Bounds;
    
        public TinyPic(Image picture, int x, int y) {
          Picture = picture;
          Bounds = new Rectangle(x, y, picture.Width, picture.Height);
        }
      }
    
      class MyForm : Form {
    
        Dictionary tinyPics = new Dictionary();
    
        public MyForm(){
          InitializeComponent(); // assuming Panel myRadarBox
                                 // with your background is there somewhere;
          myRadarBox.Paint += new PaintEventHandler(OnPaintRadar);
        }
    
        void OnPaintRadar(Object sender, PaintEventArgs e){
          foreach(var item in tinyPics){
            TinyPic tp = item.Value;
            e.Graphics.DrawImageUnscaled(tp.Picture, tp.Bounds.Location);
          }
        }
    
        void AddPic(String path, int x, int y){
          if ( File.Exists(path) ){
            var tp = new TinyPic(Image.FromFile(path), x, y);
            tinyPics[path] = tp;
            myRadarBox.Invalidate(tp.Bounds);
          }
        }
    
        void RemovePic(String path){
          TinyPic tp;
          if ( tinyPics.TryGetValue(path, out tp) ){
            tinyPics.Remove(path);
            tp.Picture.Dispose();
            myRadarBox.Invalidate(tp.Bounds);
          }
        }
      }
    

    This of course is very basic, assumes image source is path and doesn't take care of many intricate things, but that's the quick and dirty jist of it which you can certainly build on.

提交回复
热议问题