PictureBox with Graphik on top.
-
Hallo Forum,
ich erstelle gerade eine ganz einfache Anwendung mit dem C# VS Express.
Mit einer pictureBox habe ich eine .jpg von einer Landkarte in eine neue Form eingefügt. Auf dieser Landkarte sollte jetzt ein Land mit einem roten Kreis oder Rechteck markiert werden.Leider liegt das gezeichnete Rechteck immer HINTER dem Bild. Ich finde keine Methode wie ich das Rechteck auf das Bild zeichnen könnte.
Folgenden Code verwende ich im Program für zum Zeichnen des Rechtecks:
Graphics graph = this.CreateGraphics(); Pen penCurrent = new Pen(Color.Red); graph.DrawRectangle(penCurrent, 0, 222, 248, 162); graph.DrawLine(penCurrent, 0,0, 200,200);
Im Form1.Designer.cs wird das Bild wie folgt beim Starten des Programms erstellt:
// this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.InitialImage"))); this.pictureBox1.Location = new System.Drawing.Point(7, 247); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(763, 294); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBox1.TabIndex = 50; this.pictureBox1.TabStop = false; //
Kann mir jemand einen Hinweis geben wie ich das Rechteck auf das Bild zeichnen kann?
Liebe Grüße
Wauschi
-
ich würde einfach eine zweite picturebox (oder auch was anderes...) erstellen, diese über die erste legen (im Designer) und dann dynamisch per koordinaten auf der karte platzieren.
-
Ja, gute Idee, das hatte ich auch gedacht und habe versucht ein rotes Panel oder GroupBox auf das Bild zu legen.
Leider kann man die Teile zur Laufzeit nicht verschieben. Ich möchte, dass sich die Box über das Bild bewegt (wie wenn sich z.B. die Sonne über die Landkarte bewegt).
Wenn ich die Position zur Laufzeit ändern möchte bekomme ich:
Error 1 Cannot modify the return value of 'System.Windows.Forms.Control.Location' because it is not a variable
panel1.Location.X = 100;
Lg,
Wauschi
-
I got it!!!!
Danke!!
Lösung:
panel1.Location = new System.Drawing.Point((int)numReading, (int)248);
-
Du mußt immer die Location neu zuweisen, also
panel1.Location = new Point(100, 50);
Edit: zu langsam -(