Avatar billede decrypto Nybegynder
28. april 2005 - 11:21 Der er 6 kommentarer og
2 løsninger

Hvad overser jeg?

Jeg har to contructors

public class Image
{
    public int width;
    public int height;
       
    // Contructor
    public Image()
    {
    }

    // Contructor m. bredde og højde
    public Image(int width, int height)
    {
        this.width = width;
        this.height = height;
    }

                public static byte[] ResizeImage(byte[] image)
        {
            System.Drawing.Bitmap bmpOut = null;

            try
            {
               
                Bitmap bmp = new Bitmap(new MemoryStream(image));
                bmpOut = new Bitmap(width, height);
                Graphics g = Graphics.FromImage(bmpOut);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.FillRectangle(Brushes.White, 0, 0, width, height);
                g.DrawImage(bmp, 0, 0, width, height);
                bmp.Dispose();
       
                // og så lige tilbage til byte[]               
                MemoryStream resultStream = new MemoryStream();
                bmpOut.Save(resultStream, System.Drawing.Imaging.ImageFormat.Png);
                byte[] result = resultStream.ToArray();
                bmpOut.Dispose();

                return result;
            }
            catch
            {
                return null;
            }
}

I min ResizeImage metode har jeg en width og height, men hvorfor får jeg en: "\Image.cs(54): An object reference is required for the nonstatic field, method, or property 'Image.width'" og
"\Image.cs(54): An object reference is required for the nonstatic field, method, or property 'Image.height'", når jeg først og fremmest har erklæret dem øverst, og som det andet har ført nogle værdier igennem via min anden contructor.

Hvad er det jeg overser?
Avatar billede burningice Nybegynder
28. april 2005 - 11:44 #1
problemet er at din ResizeImage()-metode er static. Dvs. at den bliver ikke kørt som en del af en instans.

Så når du opretter en instans af din image-klasse og kører ResizeImage har de altså slet ikke noget med hinanden at gøre.

Prøv istedet at gør din ResizeImage-funtion nonstatic (fjern static-keywordet)
Avatar billede decrypto Nybegynder
28. april 2005 - 11:51 #2
Ved at fjerne static fra min ResizeImage metode, får jeg:
\imageServer.aspx.cs(45): An object reference is required for the nonstatic field, method, or property 'Image.ResizeImage(byte[])'

på en anden side.
Avatar billede decrypto Nybegynder
28. april 2005 - 11:54 #3
Fejlen opstår i denne linje:

Image img = new Image(40, 40);
return Image.ResizeImage(img.GetImageByID(ImageID)); <-----fejl i denne linje
Avatar billede arne_v Ekspert
28. april 2005 - 12:14 #4
Prøv:

Image img = new Image(40, 40);
return img.ResizeImage(img.GetImageByID(ImageID));
Avatar billede decrypto Nybegynder
28. april 2005 - 12:16 #5
Aaaaah selfølgelig....hvorfor havde jeg ikke lige set det....
Avatar billede decrypto Nybegynder
28. april 2005 - 12:18 #6
Det virker nu....hvem vil have points? Man kan vel også dele dem, kan man ikke?
Avatar billede burningice Nybegynder
28. april 2005 - 13:12 #7
ja... vi lægger bare begge et svar :)
Avatar billede arne_v Ekspert
28. april 2005 - 13:53 #8
.
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