Avatar billede phineas_phreak Nybegynder
07. maj 2007 - 09:56 Der er 5 kommentarer og
1 løsning

Tegne og opdatere picturebox

Hejsa...

Står med følgende problem:
Jeg har en picturebox hvor der er sat et baggrundsbillede ind. Det er et kort hvorpå jeg ønsker at tegne nogle punkter udfra givne koordinater der hentes løbende fra en gps. Det virker alt sammen også fint nok. Problemet er at punkterne ikke fjernes, så når jeg har kørt programmet et stykke tid er der hvide punkter over hele kortet. Det skal istedet kun være 1 punkt der vises. Jeg har følgende kode (bemærk at denne dog kun genererer random tal):

Random RC = new Random();
using (Graphics g = Graphics.FromImage(F.pictureBox6.Image))
{
    Point p1 = new Point(RC.Next(800), RC.Next(600));
    g.FillEllipse(Brushes.White, p1.X - 8, p1.Y - 8, 16, 16);
    F.pictureBox6.Refresh();
}

hva er det jeg gør galt ?

på forhånd tak
Avatar billede aaberg Nybegynder
07. maj 2007 - 12:45 #1
Gem dit baggrundsbillede i en variabel. Hver gang du skal tegne et nyt punkt, sætter du først baggrundsbilledet fra variablen ind i din picturebox, hvorefter du tegner punktet.
Avatar billede aaberg Nybegynder
07. maj 2007 - 12:48 #2
Random RC = new Random();

F.pictureBox6.Image = this.BackgroundImage;

using (Graphics g = Graphics.FromImage(F.pictureBox6.Image))
{
    Point p1 = new Point(RC.Next(800), RC.Next(600));
    g.FillEllipse(Brushes.White, p1.X - 8, p1.Y - 8, 16, 16);
    F.pictureBox6.Refresh();
}

For at dette skal virke, må du have en variabel på klassen eller en property som hedder BackgroundImage.
Avatar billede phineas_phreak Nybegynder
07. maj 2007 - 16:53 #3
Det har jeg problemer med at få til at virke. Desuden ville jeg gerne undgå at painte hele billedet igen. Er det ikke muligt kun at fjerne det layer hvorpå jeg har kaldt g.FillEllipse funktionen ? hvis der altså er et baggrundsbilledet sat ind i pictureboxen som BackgroundImage property ?
Avatar billede aaberg Nybegynder
07. maj 2007 - 21:30 #4
Ok. gør som herunder:

Random RC = new Random();
F.pictureBox6.Image = new Bitmap(800,600);
using (Graphics g = Graphics.FromImage(F.pictureBox6.Image))
{
    Point p1 = new Point(RC.Next(800), RC.Next(600));
    g.FillEllipse(Brushes.White, p1.X - 8, p1.Y - 8, 16, 16);
    F.pictureBox6.Refresh();
}
Avatar billede phineas_phreak Nybegynder
08. maj 2007 - 07:33 #5
Så nu fik jeg det endelig til at virke så det jo perfekt ! smid et svar :)
Avatar billede aaberg Nybegynder
08. maj 2007 - 08:15 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester