Map in picturebox

Status
Niet open voor verdere reacties.

Prokrammer

Gebruiker
Lid geworden
29 sep 2013
Berichten
24
Goedenavond mensen,

Ik wil dus een form maken met daarin een picture box waarin een afbeelding zit.. Alleen is de afbeelding vele malen groter dan de picturebox dus wil een soort drag & drop effect maken.
alleen weet ik niet waar ik moet beginnen, ik weet dat ik met mouse events moet werken maar waar ik moet beginnen en hoe ik de events moet coderen weet ik niet. ook wil ik dat ik kan in en uitzoomen.

Wie kan mij helpen ??
 
Hallo,

Je wilt dus vanuit een folder een picture naar je picturebox slepen? Interessante toepassing, ik kan je daar alleen geen hulp in bieden nu, maar ben wel erg benieuwd.

Het passend maken is een propperty van de Picturebox. Hier staat iets over zoomen dmv de PictureBoxSizeMode propperty: http://www.dotnetperls.com/picturebox. Wellicht kun je dit met een ScrollBar ofzo combineren. (Heb nu even geen Visual C# of Visual Studio)

Succes!
 
Goedenmiddag,

Nee dat is niet wat ik wil. Gewoon een vaste afbeelding die je kan rondslepen omdat de afbeelding veel groter is dan het form. op dezelfde manier als dat gebeurt in google maps.
Ik hoop dat iemand me kan helpen !
 
Ik heb even snel iets in elkaar gezet om je image te draggen, maar heb nu niet veel tijd om het te testen. (werkt wel na snel testen)
Kan ook wel anders maar heb het nu even snel zo gedaan. Eventueel morgen beter voorbeeld maar dit helpt je misschien al op weg.

Maak even een test project aan en dan kun je de code kun je gewoon plakken over form1 code behind file, en een afbeelding toevoegen en even in de code de bestandsnaam aanpassen en dan zou het zo moeten werken.
Mag je zelf even de variabelen een goede naam geven ;)

Code:
public partial class Form1 : Form
    {
        private readonly Pb _p;
        private readonly ToolStripLabel _l;
        private bool _mouseIsDown;
        private int _xOrigin;
        private int _yOrigin;

        public Form1()
        {
            InitializeComponent();

            _p = new Pb();
            _p.MouseDown += p_MouseDown;
            _p.MouseUp += p_MouseUp;
            _p.MouseMove += _p_MouseMove;
            _p.Image = new Bitmap("Worldmap_LandAndPolitical.jpg"); //in project folder
            _p.Dock = DockStyle.Fill;

            var s = new StatusStrip();
            _l = new ToolStripLabel();
            s.Dock = DockStyle.Bottom;
            s.Items.Add(_l);


            Controls.Add(_p);
            Controls.Add(s);
        }

        private void p_MouseDown(object sender, MouseEventArgs e)
        {
            _mouseIsDown = true;

            _xOrigin = e.X;
            _yOrigin = e.Y;
        }

        private void p_MouseUp(object sender, MouseEventArgs e)
        {
            _mouseIsDown = false;
        }

        void _p_MouseMove(object sender, MouseEventArgs e)
        {
            if (_mouseIsDown)
            {
                _p.Xoff += (e.X - _xOrigin);
                _p.Yoff += (e.Y - _yOrigin);

                _xOrigin = e.X;
                _yOrigin = e.Y;

                _p.Invalidate();
            _l.Text = string.Format("X: {0} | Y: {1}", _p.Xoff, _p.Yoff);
            }
        }
    }

    public class Pb : PictureBox
    {
        public int Xoff { get; set; }
        public int Yoff { get; set; }

        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
            pe.Graphics.Clear(this.BackColor);
            pe.Graphics.DrawImage(this.Image, Xoff, Yoff);
        }
    }
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan