Avatar billede majbom Novice
17. august 2006 - 10:55 Der er 18 kommentarer og
1 løsning

billede forsvinder fra picturebox

hejsa

er ved at gå amok; sidder og leger med at tegne lidt grafer i en PB og det virker til dels

jeg kan tegne det jeg vil, men hvis jeg så skal tegne noget nyt, skal det gamle jo slettes, har prøvet med PictureBox.Image = null; men så kommer der ikke noget når jeg tegner igen...

noget andet er at når jeg minimere mit program og viser det igen, er billedet væk, jeg har prøvet at få den til at gentegne med Form1.Enter, men der sker ikke noget...

håber der er nogle der kan hjælpe mig lidt her...

på forhånd tak
Avatar billede dr_chaos Nybegynder
17. august 2006 - 10:57 #1
måske kan du invalidate pictureboksen på focus af form ?
og gentegne den
Avatar billede majbom Novice
17. august 2006 - 11:13 #2
er ikke helt med på hvad du mener...

mener du at jeg skal sætte PictureBox1.Invalidate(); ved Form1_Enter() ?
Avatar billede dr_chaos Nybegynder
17. august 2006 - 11:52 #3
eller refresh()
du kan kalde det i onfocus eventet på formen (mener at en sådan eksisterer.)
Avatar billede majbom Novice
17. august 2006 - 11:56 #4
der er ikke en event der hedder onfocus på formen...
Avatar billede majbom Novice
17. august 2006 - 11:58 #5
der er en gotfocus, men der virker ligeså dårligt som enter...
Avatar billede mcgoat Nybegynder
17. august 2006 - 11:58 #6
mener du ikke på On_Paint?
Avatar billede majbom Novice
17. august 2006 - 12:02 #7
jeg kan godt få mit program til at gøre forskellige ting på f.eks. form1_activated, også tegne det den skal, men det forsvinder ligeså hurtigt igen, jeg kan lige nå at se et glimt at tegningen
Avatar billede dr_chaos Nybegynder
17. august 2006 - 12:18 #8
ok hvis du bruger form1_activated skal du sørge for at gentegne alle objekter på pictureboxen.
Avatar billede majbom Novice
17. august 2006 - 12:20 #9
ja, hvis jeg kører min tegne-methode i form1_activated, så er det den blinker...
Avatar billede dr_chaos Nybegynder
17. august 2006 - 14:26 #10
du må køre noget som efterfølgende overskriver det som er blevet tegnet.
Avatar billede dr_chaos Nybegynder
17. august 2006 - 14:41 #11
Hvis du ikke har det så prøv at lave en metode som kalder din tegne metode når pictureboxen bliver invalidated.
Avatar billede majbom Novice
17. august 2006 - 15:33 #12
private void Form1_Activated(object sender, EventArgs e)
{
  pb_graph.Invalidate();
  draw_bar("1000", 2);
}

når jeg starter mit program, kommer tegningen og forsvinder med det samme igen, kan lige nå at se den...
Avatar billede dr_chaos Nybegynder
17. august 2006 - 15:41 #13
paste lige hele din code.
Avatar billede majbom Novice
17. august 2006 - 15:50 #14
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test_bar
{
    public partial class Form1 : Form
    {
        public Graphics g;
       
        public Form1()
        {
            InitializeComponent();
        }

        public void draw_bar(string value, byte bar_number)
        {
            g = pb_graph.CreateGraphics();
            Font fnt = new Font("Verdana", 8);
            Rectangle rect;
            int start_x = 0;
            int start_y = 0;
            int width = 0;
            int height = 0;
            int font_start_x = 0;
            int font_start_y = 0;
            float max_height = 375;
            float all_bees = 3000;
            float divider = 0;
            int font_tab = 0;
            SolidBrush blue_brsh = new SolidBrush(Color.Blue);
            SolidBrush red_brsh = new SolidBrush(Color.Red);
            SolidBrush brsh;

            divider = max_height / all_bees;


            switch (value.Length)
            {
                case 1:
                    font_tab = 10;
                    break;
                case 2:
                    font_tab = 6;
                    break;
                case 3:
                    font_tab = 3;
                    break;
                default:
                    font_tab = 0;
                    break;
            }

            height = Convert.ToInt32(divider * Convert.ToDouble(value));
            start_y = Convert.ToInt32(max_height) - height;
            width = 19;
            font_start_y = 376;
            font_start_x = 0;

            switch (bar_number)
            {
                case 1:
                    start_x = 20;
                    font_start_x = start_x - 6 + font_tab;
                    brsh = blue_brsh;
                    break;
                case 2:
                    start_x = 50;
                    font_start_x = start_x - 6 + font_tab;
                    brsh = red_brsh;
                    break;
                default:
                    start_x = 0;
                    start_y = 0;
                    width = 0;
                    height = 0;
                    font_start_x = 0;
                    font_start_y = 0;
                    brsh = blue_brsh;
                    break;
            }

            rect = new Rectangle(start_x, start_y, width, height);
            g.FillRectangle(brsh, rect);
            g.DrawString(value, fnt, brsh, font_start_x, font_start_y);
        }

        private void clear_pb()
        {
            g = pb_graph.CreateGraphics();
            g.FillRectangle(new SolidBrush(Color.Transparent), new Rectangle(0, 0, 500, 500));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            draw_bar("1000", 1);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            clear_pb();
            draw_bar("2000", 1);
        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            pb_graph.Invalidate();
            draw_bar("1000", 2);
        }

       
    }
}
Avatar billede dr_chaos Nybegynder
17. august 2006 - 16:12 #15
prøv at se om InitializeComponent(); kaldes efter Form1_Activated eller  clear_pb()
Avatar billede majbom Novice
17. august 2006 - 16:19 #16
InitializeComponent(); kaldes før formen vises...
Avatar billede dr_chaos Nybegynder
18. august 2006 - 10:31 #17
prøv lige at udkommenterer alt i clear_pb()
Avatar billede majbom Novice
18. august 2006 - 15:53 #18
det er det samme...
Avatar billede majbom Novice
23. december 2006 - 11:28 #19
nå, det blev ikke til nogen løsning :S
takker for hjælpen :)
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