Bitmap schneiden



  • Hallo.

    Ich habe ein Bitmap im gewohnten Format 256 x 256.

    Ich möchte jetzt ein Bitmap mit dem Format 237 x 84 erzeugen und darin die Zeilen 16 bis 98 ab Zeichen 20 speichern. Die Variablen haben also folgende Werte:
    left = 20;
    bottom = 16;
    top = 98;

    Der Code anbei:

    private static Bitmap TrimBitmap(Bitmap texture, int left, int bottom, int top)
            {
                Bitmap B = new Bitmap(texture.Width - left + 1,top - bottom + 2);
    
                for (int fi = left; fi <= texture.Width; fi++)
                {
                    for (int fj = bottom; fj <= top; fj++)
                    {
                        /*fi und fj beziehen sich auf das grosse Bitmap*/
                        /*fi-left+1 und fj-bottom+1 beziehen sich auf das getrimmte Bitmap*/
                        B.SetPixel(fi-left+1, fj-bottom+1, texture.GetPixel(fi, fj));
                    }
                }
                    return B;
            }
    

    Das Bitmap, welches übergeben wird beinhaltet ein auf dem Kopf stehendes "Hallo Welt!" Ich bekomme ein Bitmap im gewünschten Format, aber nur in den untersten beiden Bitzeilen sind die ersten beiden Bitzeilen des "Hallo Welt!". Es ist so, als würde er bei dem neuen Bitmap das Koordinatensystem oben hin legen oder so.



  • Sieht nach C# aus, warum postest du es hier?



  • Ja, es ist C#, aber es sind eigentlich nur zwei for schleifen und ein Bitmap ist ja auch in C++ verfügbar - hab es hier gepostet, da im C# Forum nicht so viel los ist.

    Aber ich habe es gelöst. Also, wenn mal jemand ein Bitmap hat und von oben, unten und links etwas geschneiden will, hier bitte:

    private static Bitmap TrimBitmap(Bitmap texture, int left, int bottom, int top)
            {
                Bitmap B = new Bitmap(texture.Width - left + 1,256 - top - bottom + 2);
    
                for (int fi = left; fi < texture.Width; fi++)
                {
                    for (int fj = bottom; fj < 256-top; fj++)
                    {
                        B.SetPixel(fi-left, fj-bottom, texture.GetPixel(fi, fj));
                    }
                }
                    return B;
            }
    


  • CJens schrieb:

    ...ein Bitmap ist ja auch in C++ verfügbar

    In C++ nicht, aber in C++/CLI...

    CJens schrieb:

    hab es hier gepostet, da im C# Forum nicht so viel los ist.

    Ok.. ich hatte immer den Eindruck, dass im C# Unterforum mehr los ist..


Anmelden zum Antworten