Auf Bitmap zeichnen



  • Hallo,

    hab mich an das hier gehalten (ganz unten):
    http://forums.dreamincode.net/showtopic15072.htm

    Rausgekommen ist dann das hier:

    System::Drawing::Image ^ img = System::Drawing::Bitmap::FromFile("colourTable.png");
    System::Drawing::Graphics ^ gr = System::Drawing::Graphics::FromImage(img);
    
    gr->DrawLine(gcnew System::Drawing::Pen(System::Drawing::Color::Black), 0, 0, 20, 20);
    
    System::Drawing::Bitmap ^ bmpFromGraphics = gcnew System::Drawing::Bitmap(img->Width, img->Height, gr);
    bmpFromGraphics->Save("c:\\myTemp\\test.bmp");
    

    Ergebnis:

    colourTable.png: schönes buntes Bild

    test.bmp ist einfach nur leer:
    Windows Bild und Fax Anzeige: weiss, man kann reinzoomen, aber nicht mehr raus
    Paint: schwarzes Bild

    Was ist also schief gelaufen?
    Selbst wenn man die Zeile mit dem DrawLine() rausnimmt ändert das nichts am Resultat...

    mfg
    Martin



  • hmm vlt verknüpfst du die bitmap mit dem graphics objekt, aber nicht mit der grafik. probier mal die bitmap zu generieren _bevor_ du zeichnetstts...



  • shad0R schrieb:

    hmm vlt verknüpfst du die bitmap mit dem graphics objekt, aber nicht mit der grafik. probier mal die bitmap zu generieren _bevor_ du zeichnetstts...

    du meinst so rum?

    ...
    System::Drawing::Bitmap ^ bmpFromGraphics = gcnew System::Drawing::Bitmap(img->Width, img->Height, gr); 
    gr->DrawLine(gcnew System::Drawing::Pen(System::Drawing::Color::Black), 0, 0, 20, 20); 
    ...
    

    Gibt das selbe Ergebnis...



  • junge ich hab mal in der dokumentation nach geschaut und zitiere hier:

    public:
    Bitmap (
    	int width, 
    	int height, 
    	Graphics^ g
    )
    

    Parameters
    width
    The width, in pixels, of the new Bitmap.

    height
    The height, in pixels, of the new Bitmap.

    g
    The Graphics object that specifies the resolution for the new Bitmap.

    ➡ die graphics instanz hat nichts mit dem inhalt der bitmap zu tun. 💡

    so funktioniert es:

    int main()
    {
        using namespace System::Drawing;
    
        Bitmap bmp(L"C:\\pic_nohdr.png");
    
        Graphics ^gr = Graphics::FromImage(%bmp);
    
        gr->DrawLine(gcnew Pen(Color::Orange, 3), 32, 32, 320, 240);
    
        bmp.Save(L"C:\\out.png", Imaging::ImageFormat::Png);
    
        return 0;
    }
    


  • grmlhmpf

    Perfekt.

    Danke!


Anmelden zum Antworten