przeciążony konstruktor Bitmap nie zapisuje obiektu Graphics do pliku

0

nie mam pojęcia o jakich tagach w które należy ubrać kod źródłowy
aby był pokolorowany

wobec nieznalezienia podpowiedzi w tej kwestii stopce, Regulaminie, etc. może istniejącej jednakże dość solidnie ukrytej
wkleiłam poniższy kod tak po prostu
licząc na wyrozumiałość
iż ponownie nie zostanie umieszczona w tzw. koszu:

bardzo proszę o podpowiedź dlaczego nie zapisuje do pliku
narysowanej linii z ekranu:

private void DrawImagePointF(PaintEventArgs e)   
         {       
             // Draw image to screen.
             e.Graphics.DrawLine(Pens.Black, 10, 10, 1000, 1000);      
             //
             Bitmap bufor2 = new Bitmap(          
                 this.ClientSize.Width,           
                 this.ClientSize.Height,           
                 e.Graphics            
                 );       
             //
             string nazwaPliku = "AX.png";      
             //
             bufor2.Save(nazwaPliku);     
         }
        
         private void Form1_Paint(object sender, PaintEventArgs e)
         {
             DrawImagePointF(e);
         }

za chwil kilka skończy się instalacja Windows 10...
na drugim komputerze...
posiadam jeszcze Windows 7

wszystkie są 64 bitowe
posiadam też Visual Studio 2013 wersja 4

dzięki za pochylenie się nad moim problemem

0

Ty jesteś niepełnosprawna intelektualnie? Podczas edycji postu, największy widoczny napis, to Kolorowanie składni.

0

Z prawej strony ekranu, obok pola, w które wpisujesz treść, jest zajebiście żółta ramka:
ce150ed1b7.png
Jak tego można nie zauważyć? :(

0

bardzo proszę o podpowiedź dlaczego nie zapisuje do pliku

W pierwszej kolejności to proszę o wyjaśnienie co znaczy "nie zapisuje do pliku". Wywala wyjątek, nie tworzy pliku, może tworzy pusty plik, czy może coś zapisuje ale nie to co trzeba?

Jednak jak się domyślam, błąd wynika z tego, że podajesz samą nazwę pliku i gdzie w takim razie ten plik ma się zapisać? W folderze z projektem, na pulpicie, a może jeszcze innym miejscu? Spróbuj podać tam całą ścieżkę.

0

bardzo pokornie najbardziej jak to możliwe:

bardzo przepraszam

to jednakże uważam za wyjątkowo gupiutkie !

aż tyle pracy należy włożyć ??? dodatkowej która jest prosta do automatyzacji ?!!!

ja celowo nieraz przekornie piszę fonetycznie

na codeproject.com trochę mi ciężko jest
gdyby tak można było jednym kliknięciem zamiast wielu godzin ściągania projektów z opisami w plikach html

ja to rozumiem iż jest to wbrew interesom !
właściciela(i) serwisów

te reklamy muszą mrygać sobie to cena za świadczoną usługę !

rozumiem ten kawałek jako wydłużenie ! przebywania na stronie aby mi zapadło w pamięci com kątem oka widziała...

0

to jest odpowiedź dla Kolegi o nicku: some_ONE

plik jest tworzony w lokalizacji:
C:\Users\awqqq\Documents\Visual Studio 2013\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug

lub Release zaleznie od wybranej kompilacji

tworzony jest pusty plik !

w tym samym czasie
inna procedura poprawnie zapisuje do pliku !

dlaczego zatem jej nie chcę użyć ? takie pytanie jest jak najbardziej poprawne !

ponieważ potrzebuję zapisywać do pliku obiekt Graphics o złożonej konstrukcji
np. z tekstu jak również z bardziej złożonych dynamicznie tworzonych grafik

private void button3_Click(object sender, EventArgs e)
{
    Bitmap bufor = null;
    //
    bufor = new Bitmap(
        this.ClientSize.Width,
        this.ClientSize.Height);
    //
    for (int x = 0; x < this.ClientSize.Width; x++)
        for (int y = 0; y < this.ClientSize.Height; y++)
            bufor.SetPixel(x, y, Color.Red);
    //
    string nazwaPliku = "AXq.png";
    //
    bufor.Save(nazwaPliku);
}
0
Bitmap bufor = null;

dziwna nazwa bufor jak na bitmapę.

    for (int x = 0; x < this.ClientSize.Width; x++)
        for (int y = 0; y < this.ClientSize.Height; y++)
            bufor.SetPixel(x, y, Color.Red);

unikaj SetPixel jak ognia.

using (Graphics g = Graphics.FromImage(bufor))
{
    g.Clear(Color.Red);
}

tworzony jest pusty plik
pusty to znaczy plik o rozmiarze 0, czy pusty obrazek? jeśli to drugie, to czy ten obrazek ma prawidłowe wymiary?

!
unikaj wykrzykników, denerwują czytającego. jeden na post w zupełności wystarczy.

0

dzięki za zainteresowanie moim problemem

w obu podanych przykładach tworzony są pliki o rozmiarze 4 kB

przeciążony konstruktor podany mi w podpowiedzi przez Katelx tworzy plik do niego jednak obiektu Graphics nie zapisując
( w ogóle bez znaków pisarskich ja niezbyt wiem jak nowocześnie używać uśmieszków w ich miejsce )

hippies te długie włosy... jakże to teraz by wygładało... Kiepskich Matka oglądała wczoraj bodajże.... było o tym...

no więc bez wykrzykników i w ogóle w jednej linii jakby jednym tchem no dobrze niech będzie nie wiem średnik by się nadał wielokropek no dobrze daje jednym tchem a w Biblii każda kropka przecinek to samo w dokumentach tworzonych w Parlamencie afera Rywina pokazała jak wielkie znaczenie mają no dobrze zasadniczo niechby tylko 26 literek bez diakrytycznych of cooz plus dziesięć cyferek nazwa bufor pochodzi z oryginału doktora jacka Matulewskiego Visual Studio 2010 dla programistów C# helion-2011 stronica 128 o ile dobrze pamiętam mam już zainstalowany Windows 10 na drugi komputerze instaluje się Visual Studio 2013 wersja 4 abym sprawdziła czy może coś jest bowiem często się zdarza ostatnio w ubiegłym roku zapis był możliwy na płycie DVD programowo a w tym roku już niet tak wiec za chwilę sprawdzę w zupełnie innych warunkach może to kaprysy produktów Microsoftu tym niemniej bardzo będę wdzięczna za jakieś podpowiedzi co może przydać się w przyszłości nawet jak sobie radzić reinstalacja a nawet na zupełnie innym systemie komputerowym to może jeszcze bym z kilka dokupiła tak na wszelki wypadek bo to już jest kilkanaście lat i może dojść do zmęczenia materiałowego chociaż Microsoft obecnie jest trendy... pozdrawiam

0

powiem co podpowiada mi serce Redgate Reflectorem obejrzę sobie klasę Bitmap może uda mi się coś ciekawego odkryć Nobla za to nie dają jednakże to nie jest tak iż ja tylko liczę na inicjatywę Kolegów na forum chociażby... jakieś różne ciekawości od czasu do czasu zdarzają się zapisuję przed zaśnięciem aby pamiętać co nieco jeszcze rano... w oczekiwaniu na zupełnie nowe narzędzia Microsoftu pozdrowienia

0

https://msdn.microsoft.com/en-us/library/byca5y1f%28v=vs.110%29.aspx

Bitmap Constructor (Int32, Int32, Graphics)

Initializes a new instance of the Bitmap class with the specified size and with the resolution of the specified Graphics object.

Nigdzie nie jest napisane, że bitmapa będzie miała zawartość obiektu Graphics podanego jako trzeci parametr, a tylko „odziedziczy” jego rozdzielczość (przy czym przez rozdzielczość tu mają na myśli właściwości DpiX i DpiY a nie Width i Height)

0

raz jeszcze wielkie dzięki za podpowiedź...
pobrałam sobie 300 MB z codeproject.com różnych projektów mogę potwierdzić na minimum 80% działających a więc godne polecenia... jednakże analiza tego trochę potrwa skoro pobranie tych projektów zajęło mi jako potencjalnie interesujących kilka godzin... tak więc jeszcze liczę na jakąś podpowiedź wobec czego drążąc wskazany przez Katelx link by cokolwiek pozostał jakiś ślad interesujący mogę wskazać: http://stackoverflow.com/questions/2880840/create-graphic-and-save-it-as-bitmap?rq=1
wydaje się, iż najwyższy czas nadrobić zaległości graficzne kombinuję dlaczego jedynie w konstruktorze Bitmap można przepisać ? zawartość obiektu Graphics... metoda SetPixels() działa poprawnie w podanym z książki JMatulewskiego przykładzie co mnie jednak nie zadowala... Azarien zaś odradza jej stosowanie dla mnie to był jedynie przykład którym wykazałam, iż Visual Studio prawdopodobnie funkcjonuje poprawnie w Windows 8.1 mimo wszystko zabieram się za systematyczne analizy zgromadzonych materiałów w tym również otrzymane tutaj podpowiedzi za które bardzo dziękuję Nikola

0

i już na koniec... ostatni z pomysłów to analiza klasy Graphics... może należałoby od tego w ogóle rozpocząć poszukiwania co z obiektami tej klasy w ogóle można zrobić... skracać, przycinać, obcinać, etc. zadziwiające dla mnie jest, iż forma wypowiedzi od jakiegoś czasu ja to zauważam jest o wiele bardziej istotna niż problem z jakim do Kolegów obu płci zwracam się... Kiedyś Azarien na ten przykład zwrócił uwagę iż kod zaprezentowany jest wynikiem obróbki przez jakiegoś obfuscatora w ogóle nie pochylając się nad przedstawionym zapytaniem... aspekt ten został natychmiast podjęty jako dominujący zapytanie moje pozostało zaś nietknięte

jest nabór do CBŚ piszą w BingWiadomości... avatary wszelakie wykluczone i inne tym podobne...

0

Skup się na temacie a nie nagle CBŚ mieszasz do tematu.
A jak nie potrafisz to po napisaniu posta przeczytaj go jeszcze raz i wywal wszystkie zdania nie na temat.

SetPixel odradzam, bo taki podwójny for z SetPixel na każdym pikselu jest wielokrotnie wolniejszy od pojedynczego Clear.

A co do postawionego pytania, to już odpowiedziałem, że konstruktor bitmapy z trzecim parametrem Graphics NIE kopiuje automatycznie bitmapy z tego Graphics, więc nie robi tego co ci się wydawało, a bitmapa pozostaje pusta.

0

z tym avatarem było Kolega zauważyła jakobym... a w jakim celu niby na ten przykład avatar byłby użyteczny ?

Azarien teraz ponownie SetPixels() to był jedynie przykład działającego rysowania umieszczenia w utworzonym pliku podany to przykład przez autora książki dla mnie marker jedynie którymi to posługuję się od wielu lat by nie zabrnąć w jaki ślepy zaułek co podałam z zapisem programowym na płycie DVD który działa i mogłabym udostępnić niedowiarkom jak mnie Kto zdenerwuje to wskaże link do chomika... dlatego ja bardzo sobie cenię wszystkie krytyczne uwagi jakie by nie zostały wprost lub między wierszami powiedziane dla mnie jak też dla każdego innego programisty kropka czy inny znak pisarski ma znaczenie w szczególności w tekście pisanym totalnie nie używam buziek... oczekiwałabym i jeszcze jestem łasa na konstruktywną ideę jak przepisać skutecznie obiekt Graphics do obiekty Bitmap może doczekam się skoro omawiany konstruktor przeciążony nie jest do tego jak sugeruje Azarien... jest okazja by szerokiemu Gronu na tym Forum jako wynik burzy mózgów zaprezentować poprawny działający kod prztyczki do niczego nie doprowadzą a jedynie Moderatorzy usuną wreszcie ten wątek zubożając zawartość Forum problem jest prawdopodobnie skoro Katelx jak to podała całą noc trud by nie poszedł również Jej na marne całkiem... problem jaki sygnalizuję jest nastęujący: potrzebuję przepisać zawartość obiektu Graphics zawierającego powiedzmy tekst choćby jeden wyraz jakiś krótki łańcuch do obiektu Bitmap i zapisać go w pliku graficznym... uciekanie od zadanego problemu jest wielkim obciążeniem tego Forum... w każdym poście można sobie popatrzeć jak są dodawane luźne uwagi w pojedynczym zdaniu lub nawet pojedynczym słowie... wprost odlotowo z Kosmosu wziętym o którym to sam autor w trzy dni później niewiele sensownego mógłby powiedzieć...

0

dokładnie: chodzi mi o dokończenie tematu podjętego w:
Używanie bitmap w C#
tj. zapisu - przepisania obiektu Graphics do obiektu Bitmap

metoda SetPixels() podana w moim zapytaniu jest metodą obiektu Bitmap jak zapewne jest to zrozumiałe... klasa Bitmap nie posiada ? innej już metody ? o to mi właśnie chodzi przepisania zawartości obiektu Graphics do obiektu Bitmap wobec tego rozpatruję czy obiekt Graphics posiada jakąś metodę specjalizującą się pomocną w konwersji przepisaniu do obiektu Bitmap te czarne księgi wydawnictwa helion w twardej oprawie pustych kart mnóstwo... twierdzę za kilkanaście lat bycia Ich klientem...

0

Zazwyczaj najprostszym rozwiązaniem "problemu" jest zajrzenie do oficjalnej dokumentacji: https://msdn.microsoft.com/en-us/library/byca5y1f%28v=vs.90%29.aspx

0

Azarien to właśnie jakąś chwilkę temu skomentował... wobec tego moje dociekania idą jednak w kierunku klasy Graphics, zasadniczo w niej powinny być instrumentarium sprzedaży sformatowania oraz wstrzyknięcia obiektu do przykładowo obiektu Bitmap generalizując należy jednak zaciągnąć rękawy i samemu ponieważ jak widać problem jest co tu ukrywać i gdyby był łatwy i przyjemny to rozwiązanie byłoby już dawno mi wskazane przez ponad stu Czytelników, którzy zajrzeli do mojego zapytania na tym Forum raz jeszcze wielkie dzięki za wszystkie uwagi Nikola

1

Ja polecam zapoznanie się z WriteableBitmap (domyslnie dla WPFa, ale da sie bez problemu przeniesc to d owin formsowej aplikacji). Dodatkowo jest taki extension pack WriteableBitmapEx (wygooglaj sobie), ktory dodaje fajne api do tej bitmapki, ktorym bedizesz miala do syspozycji np bitmapa.DrawRectangle(), bitmapa.DrawLine() i wiele innych ciekawych metod. poza tym writeable bitmap jest dosc fajnie zoptymalizowana

Edit: Mozesz tez rzucic programowanie w cholere i zająć się sztuką kubistyczną. Po tej metyloamfetaminie (czy cokolwiek tam bierzesz) powinno Ci dobrze isc:)

0

OK je to bardzo interesujące... udaję się zatem do sprawdzenia... wielkie dzięki... tego nie było mi w ogóle znane i chyba na tym Forum jeszcze nie poruszany temat... tym bardziej dziękuję Nikola

0

jest okazja przeskoczyć do WPF super wykrzyknik w tym miejscu jednakże boję się użyć z szacunku dla Czytelników tego Forum, chcących skutecznie również pomagać niczego nigdy nie biorę... co to to NIE Nikola

1

no ile mi to zajęło ? ręcznie samej... no z godzinkę może dwie ? jedno jest pewne mam bardzo brzydko w kodzie widać pobojowisko dlatego nie odważyłam się pokazać... cóż jednak byłoby to papierowy tygrysek...no no ja trochę jednak pochyliłam się nad kodem... publikuję dla Innych w celu wzbogacenia wspólnego dorobku Forum... proszę o wybaczenie za konstruktywny nieład... to jest jeszcze na gorąco... optymalizacja wszelkie modyfikacje pod moje potrzeby może nie być tak interesujące jak poniższy kod który zapisuje jakiś łańcuch do pliku graficznego o co mi chodziło... w moim zapytaniu jakąś teorię musze jeszcze do tego dorobić już na własne potrzeby... Nikola ( chyba jako jedyna w branży zawsze bez dopalaczy )

    
   private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //
            bufor = new Bitmap(
                this.ClientSize.Width,
                this.ClientSize.Height);

          //
                        int topOffset = 100;
            //
            //Graphics.FromImage Method
            // Create image.
         //   Image imageFile = Image.FromFile("000-QQ.png");//SampImag.jpg");

            // Create graphics object for alteration.
            Graphics newGraphics = Graphics.FromImage(bufor);//imageFile);

            // Alter image.
            newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
            using (Font f = new Font("Arial", 16, FontStyle.Regular))
            {
                newGraphics.DrawString("good ", f, Brushes.Aqua, 5, 450 + topOffset);
                // Draw image to screen.
                e.Graphics.DrawImage(bufor, new PointF(0.0F, 0.0F));

            }

       //     bufor.Clone(newGraphics);

            string nazwaPliku = "000-QQ.png";
            //
            bufor.Save(nazwaPliku);

            // Dispose of graphics object.
            newGraphics.Dispose();
            //
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1