03. februar 2013 - 03:52Der er
11 kommentarer og 1 løsning
Grafik på Windows Form
Hej Jeg har prøvet alt muligt uden held. Jeg vil gerne tegne grafik på windows-formen samtidigt med at jeg får en mand til at løbe ved at gøre Picturebox visible = false /sand.
Hej Tak for svaret. Det lyder meget rigtigt det du siger og jeg har afprøvet dit eksempel med uret som virker.
Jeg kan desværre ikke få mit eget til at virke. Håber du kan hjælpe mig videre.
Formen skal kaldes fra en hovedform.
Som du kan se af mit oprindelige spørgsmål bliver, bliver baren tegnet fra koden, imens jeg har lavet picturebox'es i Design-view.
1) skal pictureboxene også defineres i koden (som du gør med dine labels og buttons)? (det må være det som hedder SuspendLayout(); def. af pictureboxe ResumeLayout(false);
Jeg har forsøgt mig at overføre din kode til mit eget problem, men det går desværre galt og crasher:
public partial class FormTest : Form { private Thread t;
public FormTest() { InitializeComponent();
t = new Thread(FillFlintstone); t.Start(); t.Abort(); }
Hej Arne nej sorry du kan ikke udlede noget af "galt og crasher". Jeg er bare i panik, skulle have lavet min appl i går :-(, så jeg var frustreret..
Jeg har videreført dit første thread-forslag og fået en grafik til at løbe hen over skærmen.
Jeg går videre med at indsætte barometer, som skal køre samtidigt med grafikken (manden) der løber hen over skærmen. Jeg vedhæfter min kode for at høre om jeg er på rette vej. Og høre om jeg "bare" skal lave en Thread2-variable og starte den i formload, sammen med den anden?
public partial class FormTest : Form { private PictureBox pb; private Thread t;
int pictureX = 717; int pictureY = 391; public FormTest() { InitializeComponent();
pb = new PictureBox(); SuspendLayout(); pb.Location = new Point(pictureX, pictureY); pb.Size = new Size (163, 148); pb.Image = new Bitmap(@"C:\Henrik\Caroline\Caroline\Images\Flintstone\flint1.png");
ClientSize = new Size(900, 590); Controls.Add(pb); Name = "Main Form"; Text = "Main Form"; ResumeLayout(false); }
private void FormTest_Load(object sender, EventArgs e) { t = new Thread(FlintStone); t.Start(); }
public void FlintStone() { for (int i = 50; i < 400; i = i+10) { if (pb.InvokeRequired) { pb.Invoke((Action)(() => pb.Location = new Point(pictureX-i, pictureY))); } else { Update(); } Thread.Sleep(300); } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { pb.Dispose(); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.